[英]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.