#python #hadoop #apache-pig
#python #hadoop #apache-pig
Вопрос:
У меня есть простой скрипт на python (moo.py ), который я пытаюсь выполнить потоковой передачей, хотя
import sys, os
for line in sys.stdin:
print 1;
и я пытаюсь запустить этот скрипт pig
DEFINE CMD `python moo.py` ship('moo.py');
data = LOAD 's3://path/to/my/data/*' AS (a:chararray, b:chararray, c:int, d:int);
res = STREAM data through CMD;
dump res;
когда я запускаю этот локальный скрипт pig (pig -x local), все в порядке,
но когда я запускаю его без -x local, он выводит эту ошибку
[основная] ОШИБКА org.apache.pig.tools.grunt.Ворчание — ОШИБКА 2017: Внутренняя ошибка при создании конфигурации задания.
[Файл журнала]
Вызвано: java.io.FileNotFoundException: File moo.py не существует.
есть идеи?
Ответ №1:
скорее всего, это проблема относительного пути.
попробуйте:
DEFINE CMD `python moo.py` ship('/local/path/to/moo.py');
это также может быть проблемой с разрешением на чтение / запись / выполнение.
Ответ №2:
Проблема заключалась в том, что я использовал ship()
функцию вместо cache()
while ship()
works file — передача локальных файлов от ведущего устройства к подчиненным cache()
используется подчиненными устройствами для получения файлов из доступного места, такого как s3 на Amazon
надеюсь, это кому-нибудь поможет :]