我正在尝试从S3存储桶读取和写入文件。我在AWS门户中创建了一个IAM用户。我已经使用相同的密钥在EMR实例中配置了aws cli,并且可以从cli中将文件读写到特定的S3存储桶中。
但是当我从Spark Shell内尝试相同操作时,便能够从存储桶中读取文件,但是当我尝试将同一文件写入同一存储桶中的不同路径时,我得到{{1} }错误。这是我执行的命令集:
AccessDenied
这是错误消息
sc.hadoopConfiguration.set("fs.s3.awsAccessKeyId", "awsAccessKeyId")
sc.hadoopConfiguration.set("fs.s3.awsSecretAccessKey", "awsSecretAccessKey")
val a = spark.read.parquet("s3://path.parquet")
a.write.parquet("s3://path.parquet")
谢谢。
答案 0 :(得分:2)
检查您的IAM权限。
如果您具有自定义名称的IAM角色,请确保它使用iam:PassRole
并检查“角色”名称中的拼写错误。 arn:aws:iam::123456789012:role/YourName
。
请参阅:AWS Docs