2017-03-21 2 views
0

Spark SQL Hive Fehler für NOT EXISTS-Klausel in SQL-Abfrage.Hive-Fehler: Nicht unterstützte Sprachenfunktionen in Abfrage in Spark-Ausführung

Platform : cdh5.6.0 

Hive version: Hive 1.1.0 

Die nachstehende Abfrage EXISTIERT fein in Bienenstock prompt ausgeführt wird: select a, b, c, d FROM interim_t WHERE NICHT EXISTIERT (a SELECT FROM xyz_n ABC, wo (a = a) und (b = b) und (c = c)

Aber das gleiche Programm gibt Fehler "Nicht unterstützte Sprachfunktionen in Abfrage" in Funken Ausführung

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)") 

Ausführung:.

spark-submit --verbose --deploy-mode client /data/abc.py 

Nachricht Fehler:

nicht unterstützte Sprache Funktionen in Abfrage: INSERT INTO abc_p PARTITION (SRVC_TYPE_CD = '1') SELECT a, b, c, d FROM interim_t WHERE NOT EXISTIERT (SELECT a VON xyz_n ABC, wo (a = a) und (b = b) und (c = c))

denke ich sqlContext.sql nicht nICHT VORHANDEN in hive-Abfragen zu unterstützen. Könnten Sie bitte eine Lösung/Alternativen vorschlagen?

Antwort

0

Ich versuchte unten auf pyspark shell, nur gut, ohne Fehler ausgeführt.

from pyspark.sql import HiveContext 
sqlContext = HiveContext(sc) 

sqlContext.sql("SELECT a,b,c,d FROM table1 i WHERE NOT EXISTS (SELECT a FROM table2 x where i.a=x.a AND i.b=x.b AND i.c=x.c)"); 

Ich habe folgende Inhalte in test.py

from pyspark import SparkContext 
sc =SparkContext() 

from pyspark.sql import HiveContext 
sqlContext = HiveContext(sc) 

sqlContext.sql("SELECT a,b,c,d FROM table1 i WHERE NOT EXISTS (SELECT a FROM table2 x where i.a=x.a AND i.b=x.b AND i.c=x.c)"); 

das Skript Ausgeführt

spark-submit --verbose --deploy-mode client test.py 

erfolgreich ausgeführt. Kannst du es versuchen?

gesetzt My up Hive 2.1.0 und 2.0.2 Zündkerzen

Ich vermute, Ihre Bienenstock-Version ist die Ausgabe

+0

Ja, könnte es das Problem mit Hive-Version und Spark-Version sein. Ich verwende Plattform: cdh5.6.0 Hive-Version: Hive 1.1.0 Spark-Version: 1.6. Für mich auch, wenn ich die Abfrage auf Hive Prompt ausführe es funktioniert, aber in Spark-Programm gibt es Fehler. –

+0

Ja, versuchen Sie, die Hive-Version zu aktualisieren und versuchen Sie es. Ich habe einige Änderungen an SQL gemacht, sollte oben Code funktionieren – Vikrame

0

ich gleiches Problem hatte, unter Lösung für mich gearbeitet. Setzen Sie diese Zeilen in der Datei und Test: -

from pyspark import SparkContext 
sc =SparkContext() 
from pyspark.sql import HiveContext 
sqlContext = HiveContext(sc) 

df = sqlContext.sql("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)") 
df.write.mode("overwrite").partitionBy("SRVC_TYPE_CD").saveAsTable("abc_p") 

Abgesehen von diesem können Sie einige weitere Optionen wie mode versuchen append sein kann. Sie können auch das Format zum Speichern auswählen. Wie mode("xxx").format("parquet"). Format kann parquet, orc usw. sein.

+0

Danke für Ihre Antwort aber für Plattform: cdh5.6.0 Hive-Version: Hive 1.1.0 Der Fehler ist gleich "pyspark.sql.utils.AnalysisException: Nicht unterstützte Sprachfunktionen in der Abfrage: "Es unterstützt NOT EXISTS nicht. –

Verwandte Themen