EMR作业中使用s3-dist-cp的--previousManifest参数时遇文件不存在错误
解决s3-dist-cp中previousManifest参数的路径配置问题
核心问题:s3-dist-cp的
previousManifest参数不直接支持S3协议路径(s3:///s3a:///s3n://),它只能读取本地文件系统或者EMR集群的HDFS路径下的清单文件,这就是你用S3路径时报错的原因。正确配置步骤:
- 先把目标S3桶里的清单文件复制到EMR集群的本地路径或者HDFS路径
- 复制到本地示例:
aws s3 cp s3://your-target-bucket/manifest-file.txt /tmp/ - 复制到HDFS示例:
hadoop fs -cp s3://your-target-bucket/manifest-file.txt hdfs:///tmp/
- 复制到本地示例:
- 在s3-dist-cp命令中使用本地或HDFS路径作为
previousManifest的值- 本地路径示例:
s3-dist-cp --src s3://source-bucket --dest s3://target-bucket --previousManifest /tmp/manifest-file.txt - HDFS路径示例:
s3-dist-cp --src s3://source-bucket --dest s3://target-bucket --previousManifest hdfs:///tmp/manifest-file.txt
- 本地路径示例:
- 先把目标S3桶里的清单文件复制到EMR集群的本地路径或者HDFS路径
额外注意点:
- 确保EMR集群的IAM角色拥有访问该S3清单文件的权限
- 如果是自动化作业,可以把清单文件拉取的步骤整合到作业初始化脚本里,无需手动操作
内容的提问来源于stack exchange,提问作者AUSTIN OUYANG
相关产品推荐
相关产品推荐

