Ознакомьтесь с этой документацией для потоковой передачи для использования распределенного кэша Hadoop в заданиях потоковой передачи Hadoop.Сначала вы загружаете файл в hdfs, затем говорите Hadoop о необходимости реплицировать его повсюду, прежде чем запускать задание, затем он удобно помещает символическую ссылку в рабочий каталог задания.Затем вы можете просто использовать Python open()
для чтения файла с for line in f
или любым другим.
Распределенный кеш - это наиболее эффективный способ перемещения файлов (из коробки) для задания, которое можно использовать какресурс.Вы не хотите просто открывать файл hdfs из своего процесса, поскольку каждая задача будет пытаться выполнить потоковую передачу файла по сети ... В распределенном кэше загружается одна копия, даже если на одном узле выполняется несколько задач.
Сначала добавьте -files hdfs://NN:9000/user/sup.txt#sup.txt
к аргументам командной строки при запуске задания.
Затем:
for line in open('sup.txt'):
# do stuff