0
私はpysparkでS3にSpark DataFrameを書き込もうとしています。私はSparkバージョン2.2.0を使用しています。PySpark 2.2.0 S3へのDataFrameの書き込みAmazonServiceExceptionクラスが見つかりません
sc = SparkContext('local', 'Test')
sc._jsc.hadoopConfiguration().set("fs.s3a.awsAccessKeyId", aws_key)
sc._jsc.hadoopConfiguration().set("fs.s3a.awsSecretAccessKey", aws_secret)
sc._jsc.hadoopConfiguration().set("fs.s3a.multipart.uploads.enabled", "true")
spark = sql.SparkSession \
.builder \
.appName("TEST") \
.getOrCreate()
sql_context = sql.SQLContext(sc, spark)
filename = 'gerrymandering'
s3_uri = 's3a://mybucket/{}'.format(filename)
print(s3_uri)
df = sql_context.createDataFrame([('1', '4'), ('2', '5'), ('3', '6')], ["A", "B"])
df.write.parquet(s3_uri)
私が手にトレースバックは、次のとおりです。
File "/usr/lib/spark/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py", line 319, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o48.save.
: java.lang.NoClassDefFoundError: com/amazonaws/AmazonServiceException
私はよく分からないが、jarファイルの依存関係のエラーがあるように思われます。私はと同様にhadoop-aws-X.jar
の複数のバージョンを試しましたが、それらはすべて同じエラーを生成します。この私のコマンドを書いている時点で
されました:私はこのNoClassDefFoundError
を解決する方法の
spark-submit --jars hadoop-aws-2.9.0.jar,aws-java-sdk-1.7.4.jar test.py
任意のアイデア?
は、あなたが(バージョンの競合の可能性を排除するために)範囲を「コンパイル」を使用してfatjar内でこれらのjarファイルを含めたことがあります参照してください。 ? – sgireddy
どのクラスタマネージャを使用していますか? – xmorera
@xmorera:現時点ではスタンドアロンマネージャーを使用しています。 – SparklesTheHorse