簡體   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