sql查询中not exists子句的spark sql配置单元错误。
Platform : cdh5.6.0
Hive version: Hive 1.1.0
下面的not exists查询在配置单元提示中运行正常:从不存在的临时位置选择a、b、c、d(从xyz\n 中选择a,其中(a=a)和(b=b)以及(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 分区(srvc\u type\u cd='1')从不存在的临时分区中选择a、b、c、d(从xyz\n 中选择a,其中(a=a)和(b=b)以及(c=c))
我认为sqlcontext.sql不支持不存在于配置单元查询中。你能提出一些解决方案/替代方案吗。
2条答案
按热度按时间mctunoxg1#
我在pyspark shell上进行了尝试,执行得很好,没有错误。
test.py中有以下内容
执行脚本
执行成功。你能试试吗?
我的配置单元2.1.0和spark 2.0.2
我怀疑你的Hive版本是问题所在
iih3973s2#
我也有同样的问题,下面的解决方案对我有效。把这些行放到你的文件里test:-
除此之外,你可以尝试更多的选择,如
mode
可以是append
. 您也可以选择保存格式。就像mode("").format("parquet")
. 格式可以是parquet, orc
等。