如何使用Scala更新ORCA ORC Hive表格Spark

时间:2015-12-30 17:55:17

标签: scala apache-spark apache-spark-sql hiveql 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”=“无”交易真实等)

尝试插入使用案例陈述和所有但不能 我们可以从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,我甚至无法在存储为ORC时查看数据 Hive版本:1.2.1 Spark版本:1.4.1 Scala版本:2.10.6

2 个答案:

答案 0 :(得分:1)

您是否按照以下链接使用SaveMode.Append尝试了DataFrame.write API?

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

使用" orc"作为格式和"追加"作为保存模式。示例在上面的链接中。

答案 1 :(得分:0)

回答sudhir问题: -

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

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