我想更新一个 orc 格式的 hive 表,我可以从我的 ambari hive View 更新,但无法从 sacla (spark-shell) 运行相同的更新语句
objHiveContext.sql("select * from table_name ") 能够看到数据但是当我运行时
objHiveContext.sql("update table_name set column_name='testing'") 无法运行,发生了一些 Noviable 异常(更新附近的无效语法等),因为我可以从 Ambari View 更新(因为我设置了所有必需的配置即 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._
注意:我没有在该表上应用任何分区或分桶
如果我应用分桶,我什至无法在存储为 ORC 时查看数据
hive 版本:1.2.1
星火版本:1.4.1
斯卡拉版本:2.10.6
最佳答案
您是否根据以下链接使用 SaveMode.Append 尝试过 DataFrame.write API?
http://spark.apache.org/docs/latest/sql-programming-guide.html#manually-specifying-options
使用“orc”作为格式,使用“append”作为保存模式。示例在上面的链接中。
关于scala - 如何使用 Scala 从 Spark 更新 ORC Hive 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534610/