Когда я запускаю свой сценарий MRJob и использую CLI для запуска кластеров EMR для работы, я пытаюсь выяснить, как загрузить данные из S3 в HDFS в кластерах. Я хочу сделать это как часть процесса установки.
Я искал несколько мест, чтобы получить представление о правильном синтаксисе для использования с MRJob для предварительной загрузки моих данных S3 в HDFS. Я все еще осваиваю терминологию и процесс.
MRJob упоминает JarStep и Hadoop Streaming в своих документах: https://pythonhosted.org/mrjob/guides/writing-mrjobs.html
У Yelp есть дискуссионная ветка по этому поводу: https://github.com/Yelp/mrjob/pull/ 665а>
В AWS есть инструмент S3DistCp для предоставления синтаксиса для загрузки, а примеры относятся к Java. (Я не могу опубликовать более 2 ссылок, но поиск в Google даст больше информации об этом)
Мой подход заключался в том, чтобы включить JarStep в качестве шага перед MRStep в моем методе шагов сценария MRJob. Я пытался передать команды S3DistCp в качестве аргументов.
def steps(self):
return [JarStep(name='jar-step', jar='s3://<bucket to jar file>',
args=['--src,s3://<bucket to data>, --dest,hdfs:///<bucket>']),
MRStep(...)
]
Я пробовал несколько вариантов этого с и без кавычек или кавычек, разделяющих ввод и вывод, или пробелов между запятыми. В первую очередь я получаю сообщение об ошибке: «Исключение в потоке 'main' java.lang.RuntimeException: аргумент --src, --desc,, не совпадает.
Примеры, которые я нашел, похожи на следующие:
args=['naive-bayes', JarStep.INPUT, JarStep.OUTPUT]
Неясно, следует ли JarStep.INPUT заменить или определить в другом месте. Я начинаю думать, что мне следует передать команды java в CLI в разделе --jobconf, чтобы он соответствовал документации S3DistCp.
Любые идеи или просто примеры, пожалуйста, пришлите мне.