AWS EMR集群流传输步骤:错误的请求

Sky*_*ler 5 hadoop amazon-s3 amazon-web-services elastic-map-reduce

我正在尝试建立一个琐碎的EMR作业,以对存储在中的大量文本文件进行字数统计s3://__mybucket__/input/。我无法正确添加两个必需的流传输步骤中的第一个(第一步是将输入映射到wordSplitter.py,使用减少IdentityReducer到;到第二步是使用映射此辅助存储的内容/bin/wc/,然后再减少IdentityReducer一次)。

这是第一步的(失败)描述:

Status:FAILED
Reason:S3 Service Error.
Log File:s3://aws-logs-209733341386-us-east-1/elasticmapreduce/j-2XC5AT2ZP48FJ/steps/s-1SML7U7CXRDT5/stderr.gz
Details:Exception in thread "main" com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: 7799087FCAE73457), S3 Extended Request ID: nQYTtW93TXvi1G8U4LLj73V1xyruzre+uSt4KN1zwuIQpwDwa+J8IujOeQMpV5vRHmbuKZLasgs=
JAR location: command-runner.jar
Main class: None
Arguments: hadoop-streaming -files s3://elasticmapreduce/samples/wordcount/wordSplitter.py -mapper wordSplitter.py -reducer org.apache.hadoop.mapred.lib.IdentityReducer -input s3://__mybucket__/input/ -output s3://__mybucket__/output/
Action on failure: Continue
Run Code Online (Sandbox Code Playgroud)

这是发送到hadoop集群的命令:

JAR location : command-runner.jar
Main class : None
Arguments : hadoop-streaming -mapper s3a://elasticmapreduce/samples/wordcount/wordSplitter.py -reducer aggregate -input s3a://__my_bucket__/input/ -output s3a://__my_bucket__/output/
Run Code Online (Sandbox Code Playgroud)

Arm*_*aun 2

我认为这里的解决方案可能非常简单。

而不是s3://用作s3a://您访问存储桶的作业的方案。请参阅此处,该s3://方案已被弃用,并且要求相关存储桶只能用于您的 Hadoop 数据。引用上述文档链接:

此文件系统要求您为文件系统指定一个存储桶 - 您不应使用包含文件的现有存储桶,或将其他文件写入同一存储桶。该文件系统存储的文件可以大于5GB,但它们不能与其他S3工具互操作。