繁体   English   中英

如何从EMR中的s3中读取文件?

[英]How to read a file from s3 in EMR?

我想在我的EMR Hadoop作业中从S3读取文件。 我正在使用“自定义JAR”选项。

我尝试了两种解决方案:

  • org.apache.hadoop.fs.S3FileSystem :抛出NullPointerException
  • com.amazonaws.services.s3.AmazonS3Client :引发异常,说“访问被拒绝”。

我无法理解的是,我是从控制台开始工作的,因此显然我应该拥有必要的权限。 但是,映射器可用的环境变量( System.getenv() )中缺少AWS _ * _ KEY密钥。

我确定我做错了,只是不确定。

可能有点晚了,但是...为AmazonS3Client使用InstanceProfileCredentialsProvider

我认为您的EMR群集需要有权访问S3,您可以为您的EMR群集创建一个IAM角色,然后为其授予对S3的访问权限。 检查此链接: http : //docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-iam-roles.html

我认为语法是

hadoop jar your.jar com.your.main.Class -Dfs.s3n.awsAccessKeyId=<access-id> -Dfs.s3n.awsSecretAccessKey=<secrect-key>

然后,您希望读取的公共前缀的路径应采用以下格式:

s3n://bucket-name/common/prefix/path

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM