私は動的に設定できるようにしたい私のspark-defaults.conf
における3つのプロパティがありますHadoopが 'spark.hadoop.fs'プロパティをpysparkに設定するのを尊重しないのはなぜですか?
spark.driver.maxResultSize
spark.hadoop.fs.s3a.access.key
spark.hadoop.fs.s3a.secret.key
はここでそうする私の試みです:
from pyspark import SparkConf
from pyspark.sql import SparkSession
conf = (SparkConf()
.setMaster(spark_master)
.setAppName(app_name)
.set('spark.driver.maxResultSize', '5g')
.set('spark.hadoop.fs.s3a.access.key', '<access>')\
.set('spark.hadoop.fs.s3a.secret.key', '<secret>)
)
spark = SparkSession.builder.\
config(conf=conf).\
getOrCreate()
print(spark.conf.get('spark.driver.maxResultSize'))
print(spark.conf.get('spark.hadoop.fs.s3a.access.key'))
print(spark.conf.get('spark.hadoop.fs.s3a.secret.key'))
spark.stop()
ここは、私が手出力です:
5g
<access>
<secret>
私はこの設定を使用してS3上のCSVファイルを読み込むしようとすると、しかし、私はパーミッション拒否エラーを取得します。
資格情報を環境変数で設定すると、そのファイルを読み取ることができます。
このように指定された資格情報をHadoopが尊重しないのはなぜですか?
更新:
私はpysparkでHadoopのプロパティを設定するに関連する他のQ &としての認識しています。
にこれらのプロパティを設定するために使用する名前であるため、spark.hadoop.*
を介して動的に設定できると思ってしまうことに、後世のために記録しようとしています。このように設定しようとすると、エラーが発生します。
多くのサイトでは、「spark.hadoop.fs.s3a.access.key
プロパティを設定する」ように指示されていますが、spark-defaults.conf
に静的に設定し、動的にpyspark
に設定しないとこのケースのみを指定しません。
sparkContext.hadoopConfiguration()セット(キー、値) がhttp://bytepadding.com/big-data/spark/combineparquetfileinputformat/ – KrazyGautam
@KrazyGautamのための統合テストを確認してください - 。これは 'pyspark'ないScalaのためのものです/ java。 – proinsias