Этап потоковой передачи кластера AWS EMR: неверный запрос

Я пытаюсь настроить тривиальное задание 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

Это команда, отправляемая в кластер 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/

person Skyler    schedule 17.12.2016    source источник


Ответы (1)


Я думаю, что решение здесь, вероятно, очень простое.

Вместо s3:// используйте s3a:// в качестве схемы доступа к корзине. См. здесь, схема s3:// устарела и требует, чтобы рассматриваемое ведро было эксклюзивным для вашего Hadoop. данные. Цитата из приведенной выше ссылки на документ:

Эта файловая система требует, чтобы вы выделили ведро для файловой системы — вы не должны использовать существующее ведро, содержащее файлы, или записывать другие файлы в одно и то же ведро. Файлы, хранящиеся в этой файловой системе, могут иметь размер более 5 ГБ, но они несовместимы с другими инструментами S3.

person Armin Braun    schedule 21.12.2016
comment
У меня такая же ошибка. Неверный запрос Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: 4C4C5B2DBA095F5C - person Skyler; 27.12.2016
comment
@Skyler, хм, может быть, чтобы помочь мне сузить круг вопросов. Можете ли вы скопировать указанный файл на HDFS через distcp? - person Armin Braun; 27.12.2016
comment
Я понятия не имею, что это такое. Я не взаимодействую с Hadoop напрямую. Я использую консоль AWS - person Skyler; 29.12.2016
comment
@Skyler, о, можете ли вы поделиться кодом для взаимодействия с консолью AWS (лучше всего, если вы добавите его в вопрос перед ошибкой imo)? - person Armin Braun; 29.12.2016