Hive Merge command is not working in Spark HiveContext

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

I am running hive merge command using Spark HiveContext in 1.6.3 spark version, but it is failing with below error.

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) 

I am not sure if ACID transaction merge command is supported or not in HiveContext of spark.

Any help on this will be appreciated.

回答1:

To use MERGE operation you will need to execute it through the HIVE JDBC since MERGE is not supported by Spark SQL as of this day.



回答2:

Spark doesn't support UPDATES or DELETES so exception is an expected behavior.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!