Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Scala更新ORC配置单元表格Spark_Scala_Apache Spark_Apache Spark Sql_Hiveql_Hivecontext - Fatal编程技术网

如何使用Scala更新ORC配置单元表格Spark

如何使用Scala更新ORC配置单元表格Spark,scala,apache-spark,apache-spark-sql,hiveql,hivecontext,Scala,Apache Spark,Apache Spark Sql,Hiveql,Hivecontext,我想更新orc格式的配置单元表,我可以从ambari配置单元视图进行更新,但无法从sacla(spark shell)运行相同的更新语句 sql(“select*from table_name”)可以查看数据,但在运行时 objHiveContext.sql(“更新表”\u name set column\u name='testing')无法运行,在我能够从Ambari视图进行更新的地方(当我设置所有必需的配置,即TBLProperty“orc.compress”=“NONE”事务性true等

我想更新orc格式的配置单元表,我可以从ambari配置单元视图进行更新,但无法从sacla(spark shell)运行相同的更新语句

sql(“select*from table_name”)可以查看数据,但在运行时

objHiveContext.sql(“更新表”\u name set column\u name='testing')无法运行,在我能够从Ambari视图进行更新的地方(当我设置所有必需的配置,即TBLProperty“orc.compress”=“NONE”事务性true等)发生了一些新的异常(更新附近的语法无效)

尝试使用Insert into using case语句,但全部失败 我们可以从spark更新hive ORC表吗? 如果是,那么程序是什么

下面输入

import org.apache.spark.SparkConf
import org.apache.spark.SparkConf
import org.apache.spark._
import org.apache.spark.sql._
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.hive.orc._
注意:我没有在那个表上应用任何分区或bucketing 如果我应用bucketing,当存储为ORC时,我甚至无法查看数据 配置单元版本:1.2.1 Spark版本:1.4.1
Scala版本:2.10.6

您是否尝试过使用SaveMode.Append的DataFrame.write API


使用“orc”作为格式,“append”作为保存模式。示例在上面的链接中。

对sudhir问题的回答:-

如何在保存时提及数据库名称

可以在表名之前提供数据库名。 示例:-如果您的数据库名为orc\U db,表名为yahoo\u orc\U table
然后,您可以在表名之前提到数据库名,如下所示:-myData.write.format(“orc”).mode(SaveMode.Append).saveAsTable(orc\u db.yahoo\u orc\u table

成功了!所以我们不能直接更新配置单元表。我的意思是,如果我有一个大约有10万条记录的表,那么我需要加载整个表,然后更新并存储在一个新的数据帧中,然后覆盖该表(SaveMode.overwrite),因为append将附加到现有的表中,而不是修改..,还有其他选择吗?我以ORC格式保存了一个表,它保存在默认数据库中,保存时如何提及数据库名称??我使用这个命令来保存myData.write.format(“orc”).mode(SaveMode.Append).saveAsTable(“yahoo_orc_table”)