如何使用 Scala 从 Spark 更新 ORC Hive table

How to Updata an ORC Hive table form Spark using Scala

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

objHiveContext.sql("select * from table_name ") 能够看到数据但是当我 运行

objHiveContext.sql("update table_name set column_name='testing' ") 无法 运行 ,在我能够从 Ambari 视图更新的地方(如我设置了所有必需的配置,即 TBLPROPERTIES "orc.compress"="NONE" transactional true etc)

尝试使用 Insert into using case 语句,但都做不到 我们可以从 spark 更新 hive ORC tables 吗? 如果是那么程序是什么?

以下导入

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._

注意:我没有在上面应用任何分区或分桶 table 如果我应用分桶,我什至无法在存储为 ORC 时查看数据 蜂巢Version:1.2.1 火花version:1.4.1 斯卡拉版本:2.10.6

您是否按照下面的 link 使用 SaveMode.Append 尝试过 DataFrame.write API?

http://spark.apache.org/docs/latest/sql-programming-guide.html#manually-specifying-options

使用"orc"作为格式,"append"作为保存模式。上面的link就是例子。

对问题的回答:-

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

您可以在 table 名称之前提供数据库名称。 例如:- 如果您的数据库名称是 orc_db 并且 table 名称是 yahoo_orc_table 然后你可以在 table 名称之前提到数据库名称,如下所示:-myData.write.format("orc").mode(SaveMode.Append).saveAsTable("orc_db.yahoo_orc_table")