【发布时间】:2017-08-13 08:08:32
【问题描述】:
SQL 查询中 NOT EXISTS 子句的 Spark SQL Hive 错误。
Platform : cdh5.6.0
Hive version: Hive 1.1.0
下面的 NOT EXISTS 查询在 hive 提示符下运行良好: SELECT a,b,c,d FROM interim_t WHERE NOT EXISTS (SELECT a FROM xyz_n ABC where (a=a) AND (b=b) AND (c=c)
但同一程序在 spark 执行中给出错误“查询中不支持的语言功能”。
from pyspark import SparkContext
sc =SparkContext()
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
#sqlContext.sql("INSERT INTO abc_p PARTITION (SRVC_TYPE_CD='1') SELECT a,b,c,d FROM interim_t WHERE NOT EXISTS (SELECT a FROM xyz_n ABC where (a=a) AND (b=b) AND (c=c)")
执行:
spark-submit --verbose --deploy-mode client /data/abc.py
错误信息:
查询中不支持的语言功能:INSERT INTO abc_p PARTITION (SRVC_TYPE_CD='1') 从不存在的 interim_t 中选择 a、b、c、d (SELECT a FROM xyz_n ABC where (a=a) AND (b=b) AND (c=c))
我认为 sqlContext.sql 不支持在 hive 查询中不存在。您能否提出一些解决方案/替代方案。
【问题讨论】:
标签: hive pyspark apache-spark-sql