如何使用 Scala 从 Spark 更新 ORC Hive table
How to Updata an ORC Hive table form Spark using Scala
我想更新 orc 格式的配置单元 table,我可以从我的 ambari 配置单元视图中更新,但无法从 sacla (spark) 运行 相同的更新语句-shell)
objHiveContext.sql("select * from table_name ") 能够看到数据但是当我 运行
objHiveContext.sql("update table_name set column_name='testing' ") 无法 运行 ,在我能够从 Ambari 视图更新的地方(如我设置了所有必需的配置,即 TBLPROPERTIES "orc.compress"="NONE" transactional true etc)
尝试使用 Insert into using case 语句,但都做不到
我们可以从 spark 更新 hive ORC tables 吗?
如果是那么程序是什么?
以下导入
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._
注意:我没有在上面应用任何分区或分桶 table
如果我应用分桶,我什至无法在存储为 ORC 时查看数据
蜂巢Version:1.2.1
火花version:1.4.1
斯卡拉版本:2.10.6
您是否按照下面的 link 使用 SaveMode.Append 尝试过 DataFrame.write API?
http://spark.apache.org/docs/latest/sql-programming-guide.html#manually-specifying-options
使用"orc"作为格式,"append"作为保存模式。上面的link就是例子。
对问题的回答:-
如何在保存时提及数据库名称?
您可以在 table 名称之前提供数据库名称。
例如:- 如果您的数据库名称是 orc_db 并且 table 名称是 yahoo_orc_table
然后你可以在 table 名称之前提到数据库名称,如下所示:-myData.write.format("orc").mode(SaveMode.Append).saveAsTable("orc_db.yahoo_orc_table")
我想更新 orc 格式的配置单元 table,我可以从我的 ambari 配置单元视图中更新,但无法从 sacla (spark) 运行 相同的更新语句-shell)
objHiveContext.sql("select * from table_name ") 能够看到数据但是当我 运行
objHiveContext.sql("update table_name set column_name='testing' ") 无法 运行 ,在我能够从 Ambari 视图更新的地方(如我设置了所有必需的配置,即 TBLPROPERTIES "orc.compress"="NONE" transactional true etc)
尝试使用 Insert into using case 语句,但都做不到 我们可以从 spark 更新 hive ORC tables 吗? 如果是那么程序是什么?
以下导入
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._
注意:我没有在上面应用任何分区或分桶 table 如果我应用分桶,我什至无法在存储为 ORC 时查看数据 蜂巢Version:1.2.1 火花version:1.4.1 斯卡拉版本:2.10.6
您是否按照下面的 link 使用 SaveMode.Append 尝试过 DataFrame.write API?
http://spark.apache.org/docs/latest/sql-programming-guide.html#manually-specifying-options
使用"orc"作为格式,"append"作为保存模式。上面的link就是例子。
对问题的回答:-
如何在保存时提及数据库名称?
您可以在 table 名称之前提供数据库名称。 例如:- 如果您的数据库名称是 orc_db 并且 table 名称是 yahoo_orc_table 然后你可以在 table 名称之前提到数据库名称,如下所示:-myData.write.format("orc").mode(SaveMode.Append).saveAsTable("orc_db.yahoo_orc_table")