sparksqlでハイブテーブルを削除したいとします。sparksqlドロップハイブテーブル
hadoop 2.6、ハイブ2.0、スパーク1.6、およびスパーク2.0がインストールされているクラスタ。私は両方のバージョンでpysparkシェルとspark-submitジョブで次のコードを試しました。
sqlContext.sql('drop table test') //spark 1.6
spark.sql('drop table test') //spark 2.0
両コードがpyspakシェルで正常に動作し、私は試験テーブルはもはや存在しないハイブCLIから見ることができます。
しかし、コードがpythonファイルにあり、後でspark-submitを使用してクラスターに送信された場合、そのコードは決して有効になりませんでした。
スパーク2.0であっても、私は火花でconfディレクトリにハイブ-site.xmlのをコピーした
pyspark.sql.utils.AnalysisException: u"Table to drop '`try`' does not exist;"
に関するエラーが発生しました。
sparksqlを使用してハイブテーブルを削除する正しい方法は何ですか?
更新:私が試し
スパークシェル及びIは火花シェル環境で次のコード
spark-submit --master yarn --deploy-mode cluster try_spark_sql.py
を用いsubmiitedジョブの間にスパーク環境を比較し、Iはスパークを見ることができます。はハイブ
IN上記のコードを使用して送信されました。
spark = SparkSession.builder.appName("PythonSQL").config("spark.sql.catalogImplementation","hive").
しかし、それは、環境には影響しません。環境がspark.sql.catalogImplementation 私は、次のコードを使用してそれを設定しようとしたが含まれていません。
クラスタではなく、クライアントモードを使用してジョブを送信しています。その後、ハイブテーブルを正常に削除できます。
質問:spark-submitスクリプトでsqlContextコンテキストを使用していますか? –
もちろん、私はコードのその部分を追加しませんでした。 sparkcontxは通常どおりに初期化され、sqllContxt.sqlを使用すると.orcファイルから正常に読み取ることができます。 –