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

sud*_*hir 5 scala hiveql apache-spark apache-spark-sql hivecontext

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

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

objHiveContext.sql("update table_name set column_name='testing' ") 无法运行,一些 Noviable 异常(更新附近的语法无效等)发生在我能够从 Ambari 视图更新的地方(因为我设置了所有必需的配置)即 TBLPROPERTIES "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._
Run Code Online (Sandbox Code Playgroud)

注意:我没有在该表上应用任何分区或分桶如果我应用分桶,当存储为 ORC Hive 版本:1.2.1 Spark 版本:1.4.1 Scala 版本:2.10.6 时,我什至无法查看数据

Chr*_*gly 1

您是否根据下面的链接尝试过使用 SaveMode.Append 的 DataFrame.write API?

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

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