gpt4 book ai didi

python - PySpark 使用 IAM 角色访问 S3

转载 作者:太空狗 更新时间:2023-10-29 21:52:18 25 4
gpt4 key购买 nike

我想知道 PySpark 是否支持使用 IAM 角色访问 S3。具体来说,我有一个业务限制,我必须担任 AWS 角色才能访问给定的存储桶。这在使用 boto 时很好(因为它是 API 的一部分),但我找不到关于 PySpark 是否支持开箱即用的明确答案。

理想情况下,我希望能够在本地以独立模式运行时承担一个角色,并将我的 SparkContext 指向该 s3 路径。我已经看到非 IAM 调用通常遵循:

spark_conf = SparkConf().setMaster('local[*]').setAppName('MyApp')
sc = SparkContext(conf=spark_conf)
rdd = sc.textFile('s3://<MY-ID>:<MY-KEY>@some-bucket/some-key')

提供 IAM 信息是否存在类似的东西? :

rdd = sc.textFile('s3://<MY-ID>:<MY-KEY>:<MY-SESSION>@some-bucket/some-key')

rdd = sc.textFile('s3://<ROLE-ARN>:<ROLE-SESSION-NAME>@some-bucket/some-key')

如果不是,使用 IAM 凭据的最佳实践是什么?有可能吗?

我正在使用 Python 1.7 和 PySpark 1.6.0

谢谢!

最佳答案

访问 s3 的 IAM 角色只有 s3a 支持,因为它使用 AWS SDK。

您需要将hadoop-aws JAR 和aws-java-sdk JAR(及其包中的第三方Jar)放入您的CLASSPATH。

hadoop-aws关联。

aws-java-sdk链接。

然后在 core-site.xml 中设置:

<property>
<name>fs.s3.impl</name>
<value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
</property>
<property>
<name>fs.s3a.impl</name>
<value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
</property>

关于python - PySpark 使用 IAM 角色访问 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36165704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com