ОШИБКА 2997: Обнаружено исключение ввода-вывода.Файл foo.py не существует - PullRequest
0 голосов
/ 28 мая 2018

Мой PIG-скрипт имеет следующую строку

register 'foo.py' USING jython as foo;

Файл foo.py присутствует в корне HDFS.

, но когда я запускаю свой код, я получаю ошибку

ERROR 2997: Encountered IOException. File foo.py does not exist

Я сделал Google и нашел эту тему

Обнаружено IOException при регистрации Python UDF в pig.Файл helloworld.py не существует

Решение, по-видимому, подразумевает, что файл foo.py должен быть скопирован в локальную файловую систему, чтобы он работал.но это не вариант для меня.

Я хочу скопировать foo.py на HDFS, а затем использовать его из сценария pig.

Я уже пробовал register './foo.py' USING jython as foo;, и я могу подтвердить, чтоФайл foo.py находится в корневом каталоге HDFS.

Я также попытался изменить разрешения для файла foo.py на rwxrwxrwx, но Pig не может найти этот файл.

Edit :: Так как я использую бистро Hortonworks, я также попытался зарегистрировать свой UDF на вкладке UDF.но он все равно выдает такую ​​же ошибку даже после регистрации.

Edit2 :: Я также скопировал util.py в каталог /user/admin и дал разрешения rwxrwxrwx.но все еще не могу найти файл py.

Edit3 :: также пытался register 'hdfs://foo.py' USING jython as util;, но все равно не найдет его.

enter image description here

1 Ответ

0 голосов
/ 28 мая 2018

Если он находится в корне, вы хотите /foo.py

Чтобы уточнить загрузку из HDFS, тогда необходимы три слеша hdfs:///foo.py (поскольку полный синтаксис hdfs://namenode:port/fileURI)

Использование ./foo.py подразумевает корень пользовательской папки HDFS для пользователя, выполняющего команду

...