2017-09-11 15 views
0

1.6.3 spark 버전의 Spark HiveContext를 사용하여 하이브 병합 명령을 실행하고 있지만 아래 오류로 인해 실패합니다.Hive Merge 명령이 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 트랜잭션 병합 명령이 지원되는지 여부는 확실하지 않습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

답변

1

스파크는 UPDATES 또는 DELETES을 지원하지 않으므로 예외가 예상됩니다.

2

MERGE 작업을 사용하려면이 시점의 MERGE가 Spark SQL에서 지원되지 않으므로 HIVE JDBC를 통해 실행해야합니다.