hadoop - Hive Merge 命令在 Spark HiveContext 中不起作用

标签 hadoop apache-spark hive acid hivecontext

我在 1.6.3 spark 版本中使用 Spark HiveContext 运行配置单元合并命令,但失败并出现以下错误。

2017-09-11 18:30:33 Driver [INFO ] ParseDriver - Parse Completed
2017-09-11 18:30:34 Driver [INFO ] ParseDriver - Parsing command: MERGE INTO emp_with_orc AS T USING SOURCE_TABLE AS S 
ON T.id = S.id 
WHEN MATCHED AND (S.operation = 1) THEN UPDATE SET a = S.a,b = S.b 
WHEN MATCHED AND (S.operation = 2) THEN DELETE 
WHEN NOT MATCHED THEN INSERT VALUES (S.id, S.a, S.b)
2017-09-11 18:30:34 Driver [ERROR] HiveWriter - Error while executing the merge query.
org.apache.spark.sql.AnalysisException: cannot recognize input near 'MERGE' 'INTO' 'emp_with_orc'; line 1 pos 0
    at org.apache.spark.sql.hive.HiveQl$.createPlan(HiveQl.scala:318)
    at org.apache.spark.sql.hive.ExtendedHiveQlParser$$anonfun$hiveQl$1.apply(ExtendedHiveQlParser.scala:41)
    at org.apache.spark.sql.hive.ExtendedHiveQlParser$$anonfun$hiveQl$1.apply(ExtendedHiveQlParser.scala:40)
    at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:136)
    at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:135)
    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:242)
    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:242)
    at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:222)
    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1$$anonfun$apply$2.apply(Parsers.scala:254)
    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1$$anonfun$apply$2.apply(Parsers.scala:254)
    at scala.util.parsing.combinator.Parsers$Failure.append(Parsers.scala:202)
    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:254)
    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:254)
    at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:222)

我不确定在 spark 的 HiveContext 中是否支持 ACID 事务合并命令。

我们将不胜感激。

最佳答案

要使用 MERGE 操作,您需要通过 HIVE JDBC 执行它,因为截至目前,Spark SQL 不支持 MERGE。

关于hadoop - Hive Merge 命令在 Spark HiveContext 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46156660/

相关文章:

java - 在 hbase 中批量加载时出错

date - 如何将带有时间(日期)类型的文件加载到 Hive 表中?

sql - AWS Athena - 分区查询不同年份的数据

hadoop - Mesos上的独立Spark集群访问其他Hadoop集群中的HDFS数据

hadoop - 运行 hive 时出错:org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.RuntimeException hive 错误等

使用密码文件的 Hadoop 凭据

rest - 尝试在HBase REST API中查找基于列值的过滤

hadoop - ExecuteSQL 什么都不做

apache-spark - 使用 python 的 Spark 矩阵乘法

python - 在 UDF 的 withColumn 之后,运行 count() 给出 TypeError : 'NoneType' object is not subscriptable