4

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

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

objHiveContext.sql("update table_name set column_name='testing'") 无法运行,一些 Noviable 异常(更新附近的语法无效等)正在发生,因为我能够从 Ambari 视图更新(因为我设置了所有必需的配置即 TBLPROPERTIES "orc.compress"="NONE" transactional true 等)

尝试将 Insert 插入使用 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 Spark 版本:1.4.1 Scala 版本:2.10.6 时,我什至无法查看数据

4

2 回答 2

1

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

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

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

于 2015-12-30T20:06:17.003 回答
0

回答sudhir问题:-

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

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

于 2016-08-08T05:45:34.993 回答