Hadoop 为spark输出文件设置S3输出文件授权人
我正在AWS EMR上运行Spark,在获取输出文件的正确权限时遇到一些问题(Hadoop 为spark输出文件设置S3输出文件授权人,hadoop,amazon-web-services,amazon-s3,apache-spark,Hadoop,Amazon Web Services,Amazon S3,Apache Spark,我正在AWS EMR上运行Spark,在获取输出文件的正确权限时遇到一些问题(rdd.saveAsTextFile(“”))。在hive中,我会在开始处添加一行set fs.s3.canned.acl=BucketOwnerFullControl,这将设置正确的权限。对于Spark,我尝试了跑步: hadoop jar /mnt/var/lib/hadoop/steps/s-3HIRLHJJXV3SJ/script-runner.jar \ /home/hadoop/spark/bin/spar
rdd.saveAsTextFile(“”)
)。在hive中,我会在开始处添加一行set fs.s3.canned.acl=BucketOwnerFullControl
,这将设置正确的权限。对于Spark,我尝试了跑步:
hadoop jar /mnt/var/lib/hadoop/steps/s-3HIRLHJJXV3SJ/script-runner.jar \
/home/hadoop/spark/bin/spark-submit --deploy-mode cluster --master yarn-cluster \
--conf "spark.driver.extraJavaOptions -Dfs.s3.canned.acl=BucketOwnerFullControl" \
hdfs:///user/hadoop/spark.py
但是输出文件上的权限设置不正确。将“fs.s3.canted.acl=BucketOwnerFullControl”或任何s3 canted权限传递给spark作业的正确方法是什么
提前感谢我找到了解决方案。在作业中,您必须访问JavaSparkContext,从中获取Hadoop配置并在那里设置参数。例如:
sc._jsc.hadoopConfiguration().set('fs.s3.canned.acl','BucketOwnerFullControl')
在spark中传递hadoop配置键的正确方法是使用
--conf
,键前缀为spark.hadoop.
。你的命令看起来像
hadoop jar /mnt/var/lib/hadoop/steps/s-3HIRLHJJXV3SJ/script-runner.jar \
/home/hadoop/spark/bin/spark-submit --deploy-mode cluster --master yarn-cluster \
--conf "spark.hadoop.fs.s3.canned.acl=BucketOwnerFullControl" \
hdfs:///user/hadoop/spark.py
不幸的是,我在spark的官方文档中找不到任何参考资料