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

标签 scala apache-spark apache-spark-sql hiveql hivecontext

我想更新一个 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/

相关文章:

scala - 如何使用 sbt 创建包含源(.java 和 .scala)和类的 .jar?

sql - 在pyspark中实现MERGE INTO sql

scala - Apache Spark 使用管道分隔的 CSV 文件

apache-spark - yarn 集群模式无法用spark读取Hbase数据

apache-spark - 在不知道作业 ID 的情况下如何获取 Apache Spark 作业进度?

scala - 在 Spark sql 数据帧(UDAF)上的自定义案例类上实现总和聚合器

apache-spark - 从JDBC源迁移数据时如何优化分区?

java - 增加堆大小

scala - scala中的类别名

scala - 我如何获得一个 Spark 数据帧来打印它的解释计划到一个字符串