我试图使用Scala代码访问星火上的S3文件,并获得以下错误
电子病历配置:
Scala代码
val hadoopConf = sparkContext.hadoopConfiguration
if (baseDirectory.startsWith("s3:")) {
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3.awsAccessKeyId", jobProperties.getAs[String](S3_ACCESS_KEY_ID))
hadoopConf.set("fs.s3.awsSecretAccessKey", jobProperties.getAs[String](S3_SECRET_ACCESS_KEY))
}
org.apache.hadoop.fs.FileSystem.get(new java.net.URI(baseDirectory), hadoopConf)误差
20/03/28 15:18:06 ERROR Client: Application diagnostics message: User class threw exception: org.apache.hadoop.security.AccessControlException: Permission denied: s3n://r10x-tlog/occ/gzip/test_$folder$
at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.processException(Jets3tNativeFileSystemStore.java:449)
at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.processException(Jets3tNativeFileSystemStore.java:427)
at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.handleException(Jets3tNativeFileSystemStore.java:411)
at 我检查了星火和哈多普罐子Hadoop图书馆
你能帮忙吗?
发布于 2020-04-19 13:55:23
不要使用s3n,请使用s3。电子病历不支持s3a和s3n。还要确保您的EMR_IAM_Role能够访问该s3桶。
发布于 2020-05-03 00:16:28
您应该使用EMRFS而不是s3a或s3n,因为使用S3作为FS是本机实现。
使用EMRFS,您不需要使用凭据来使用S3。您只需将权限授予DefaultRole
发布于 2022-09-07 14:51:38
只要给列表对象和获取对象的访问密钥提供必要的权限,就可以了。
https://stackoverflow.com/questions/60902824
复制相似问题