Ich möchte eine Hive-Tabelle durch Sparksql fallen lassen.sparksql Drop Hive-Tabelle
In einem Cluster mit Hadoop 2.6, Hive 2.0, Spark 1.6 und Funke 2.0 installiert. Ich habe den folgenden Code in pyspark shell und spark-submit-Job mit beiden Versionen versucht.
sqlContext.sql('drop table test') //spark 1.6
spark.sql('drop table test') //spark 2.0
Beiden Code funktionieren gut in pyspak-Schale, kann ich aus dem Bienenstock cli sehen, dass die Test Tabelle nicht mehr existieren.
Wenn der Code jedoch in einer Python-Datei enthalten war und später mithilfe von Spark-submit dem Cluster übergeben wurde, wurde der Code nie wirksam.
Funke 2.0 gab sogar Fehler zu
pyspark.sql.utils.AnalysisException: u"Table to drop '`try`' does not exist;"
I hive-site.xml in das Verzeichnis conf in Funken kopiert haben.
Was wäre der richtige Weg, um eine Hive-Tabelle durch sparksql fallen zu lassen?
Update:
Ich habe versucht, verglich die Funken Umgebung zwischen dem Funkenschale und der Arbeit, die ich
spark-submit --master yarn --deploy-mode cluster try_spark_sql.py
In der Funken Shell-Umgebung mit dem folgenden Code submiited, kann ich Funken sehen. sql.catalogImplementation ist auf Bienenstock
IN den Auftrag mit dem obigen Code eingereicht festgelegt. Die Umgebung enthält keine spark.sql.catalogImplementation Ich versuchte es Einstellung mit dem folgenden Code:
spark = SparkSession.builder.appName("PythonSQL").config("spark.sql.catalogImplementation","hive").
Aber es hat keine Auswirkungen auf die Umwelt.
Eine Abhilfe Ich fand einreicht den Job Client Modus statt Cluster mit Modus. Dann kann die Hive-Tabelle erfolgreich gelöscht werden.
Frage, verwenden Sie sqlContext-Kontext in Ihrem Spark-Submit-Skript? –
natürlich habe ich diesen Teil des Codes nicht hinzugefügt. Der Befehl sparkcontx wird wie üblich initialisiert und mit sqllContxt.sql kann erfolgreich aus der .orc-Datei gelesen werden. –