首页 > 解决方案 > 带有 Spark 2.4.4 和 Scala 的 Emr 的 S3 访问错误

问题描述

我正在尝试使用 Scala 代码在 EMR 上的 Spark 中访问 S3 文件并收到以下错误

电子病历配置:

电子病历配置

斯卡拉代码

    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 

我检查了 Spark 和 Hadoop jars Hadoop Libraries

能否请你帮忙?

标签: amazon-emr

解决方案


请使用s3而不是 s3n 。EMR 不支持 s3a 和 s3n。还要确保您的 EMR_IAM_Role 有权访问该 s3 存储桶。


推荐阅读