gpt4 book ai didi

authentication - 通过 Spark 本地读取 S3 文件(或更好的 : pyspark)

转载 作者:行者123 更新时间:2023-12-03 11:29:26 37 4
gpt4 key购买 nike

我想通过 Spark(实际上是 pyspark)从我的(本地)机器读取 S3 文件。现在,我不断收到身份验证错误,例如

java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3n URL, or by setting the fs.s3n.awsAccessKeyId or fs.s3n.awsSecretAccessKey properties (respectively).



我在这里和网上到处找,尝试了很多东西,但显然 S3 在过去的一年或几个月里一直在变化,所有方法都失败了,只有一个:
pyspark.SparkContext().textFile("s3n://user:password@bucket/key")

(注意 s3n [ s3 不起作用])。现在,我不想使用带有用户名和密码的 URL,因为它们会出现在日志中,而且我也不知道如何从 ~/.aws/credentials 中获取它们。无论如何文件。

那么,我如何使用现在的 AWS 凭证通过 Spark(或者更好的 pyspark)从 S3 本地读取 standard ~/.aws/credentials文件(理想情况下,无需将凭据复制到另一个配置文件中)?

PS:我试过 os.environ["AWS_ACCESS_KEY_ID"] = …os.environ["AWS_SECRET_ACCESS_KEY"] = … , 这没用。

PPS:我不确定在哪里“设置 fs.s3n.awsAccessKeyId 或 fs.s3n.awsSecretAccessKey 属性”(谷歌没有想出任何东西)。但是,我确实尝试了很多设置这些的方法: SparkContext.setSystemProperty() , sc.setLocalProperty() , 和 conf = SparkConf(); conf.set(…); conf.set(…); sc = SparkContext(conf=conf) .没有任何效果。

最佳答案

是的,您必须使用 s3n而不是 s3 . s3是对 S3 的一些奇怪的滥用,我不清楚它的好处。

您可以将凭据传递给 sc.hadoopFilesc.newAPIHadoopFile调用:

rdd = sc.hadoopFile('s3n://my_bucket/my_file', conf = {
'fs.s3n.awsAccessKeyId': '...',
'fs.s3n.awsSecretAccessKey': '...',
})

关于authentication - 通过 Spark 本地读取 S3 文件(或更好的 : pyspark),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443911/

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