EMRでHive Metastoreを使用しています。私はHiveSQLを使ってテーブルを手動で問い合わせることができます。
しかし、私は、スパーク仕事で同じテーブルを使用する場合、それは入力パスが存在しないと言う:S3:org.apache.hadoop.mapred.InvalidInputException:によって引き起こさ//指定されたパーティションパスがない場合、SPARK SQLが失敗する
入力パスを私はS3で私の上記のパーティションのパスを削除した
.... //:.. //それはまだ、テーブルレベルでのパーティションを削除せずに、私のハイブで動作S3: は存在しません。しかし、そのここでとにかくpysparkに
を働いていない私の完全なコード
from pyspark import SparkContext, HiveContext
from pyspark import SQLContext
from pyspark.sql import SparkSession
sc = SparkContext(appName = "test")
sqlContext = SQLContext(sparkContext=sc)
sqlContext.sql("select count(*) from logan_test.salary_csv").show()
print("done..")
私はハイブカタログ表を使用するために、以下のように私の仕事を提出です。私は、メタストアは、テーブルのパーティションを保ったが、ディレクトリは
チェックS3がありませんでしたHDFSと同様のエラーがあった...それが欠落している、またはあなたがそれを削除した場合
spark-submit test.py --files /usr/lib/hive/conf/hive-site.xml
てみてください「S3A://」の代わりに「S3://」 –
S3のパスに:他のテーブルとうまく動作し、同じテーブルにはハイブで正常に動作します。//! – logan
1)Hiveと対話する場合は、SQLContextの使用を停止します。 2)SparkSessionで明示的に 'enableHiveSupport()'を行う必要があります。 –