0

Если я запускаю задание EMR (на Java) на веб-сервисах Amazon для обработки больших объемов данных, возможно ли, чтобы каждый отдельный картограф получал небольшой файл, хранящийся на S3? Обратите внимание, что маленький файл, о котором я говорю, НЕ является входом для картографов. Скорее, картографы должны обрабатывать входные данные в соответствии с некоторыми правилами в маленьком файле. Может быть, большой входной файл представляет собой, например, миллиард строк текста, и я хочу отфильтровать слова, которые находятся в черном списке или что-то еще, читая небольшой файл вложенных в черный список слов, хранящихся в ведре S3. В этом случае каждый обработчик будет обрабатывать разные части входных данных, но все они должны получить доступ к файлу ограниченных слов на S3. Как заставить mappers делать это на Java?Как я могу получить доступ к содержимому файла из карт на гибкой карте Amazon?

EDIT: Я не использую фреймворк Hadoop, поэтому нет вызовов метода setup() или map(). Я просто использую потоковый сервис EMR и читаю stdin по строкам из входного файла.

ответ

0

Вы можете получить доступ к любому объекту S3 внутри устройства отображения напрямую с использованием протокола S3. Например. s3: //mybucket/pat/to/file.txt

http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-file-systems.html.

Фактически вы можете использовать S3 для доступа к входным файлам вашего картографа, а также к любому специальному поисковому файлу, который вы собираетесь использовать. Раньше они были дифференцированы с использованием протокола s3n: // для использования объекта s3 и s3bfs: // для хранения блоков. Теперь вам не нужно различать и просто использовать s3: //

В качестве альтернативы вы можете выполнить шаг s3distcp в кластере EMR, чтобы скопировать файл - и сделать его доступным в hdf. (это не то, о чем вы просили, но ..) http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html