Свинья не работает в настроении mapreduce (hadoop 3.1.1 + pig 0.17.0)

Я новичок в Hadoop. Моя версия hadoop - 3.1.1, а версия pig - 0.17.0.

Все работает, как ожидалось, запустив этот скрипт в локальном режиме

свинья -x местный

grunt> student = LOAD '/home/ubuntu/sharif_data/student.txt' USING PigStorage(',') as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
grunt> DUMP student;

Результат для локального режима  введите описание изображения здесь

Но для того же входного файла и сценария pig режим mapreduce не работает.

свинья -x mapreduce

grunt> student = LOAD '/pig_data/student.txt' USING PigStorage(',') AS ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
grunt> STORE student INTO '/pig_data/student_out' USING PigStorage (',');

OR

grunt> student = LOAD 'hdfs://NND1:9000/pig_data/student.txt' USING PigStorage(',') AS ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
grunt> STORE student INTO 'hdfs://NND1:9000/pig_data/student_out' USING PigStorage (',');

Результат для режима уменьшения карты  введите здесь описание изображения ИЛИ  введите описание изображения здесь Примечание: student.txt успешно загружен в HDFS.

hdfs dfs -ls  /pig_data 
Found 2 items
-rw-r--r--   3 ubuntu supergroup     861585 2019-07-12 00:55 /pig_data/en.sahih.txt
-rw-r--r--   3 ubuntu supergroup        234 2019-07-12 12:25 /pig_data/student.txt

Даже в режиме grunt эта команда возвращает правильное имя файла HDFS.

grunt> fs -cat /pig_data/student.txt 
  • Почему говорится, что не удалось прочитать данные, когда файл существует по этому пути?
  • Каковы могут быть возможные причины того, что я упускаю?

Любая помощь приветствуется.


person sharif2008    schedule 12.07.2019    source источник
comment
Вы уверены, что не проверяет локально? Вы не указали HDFS в URL-адресе. Обратите внимание, как здесь используется полный URL-адрес HDFS tutorialspoint.com/apache_pig/apache_pig_grunt_shell   -  person Ben Watson    schedule 12.07.2019
comment
Зачем мне нужен путь hdfs, поскольку свинья может идентифицировать его с помощью fs? К вашему сведению, я тоже пробовал использовать путь hdfs :(   -  person sharif2008    schedule 12.07.2019
comment
Выполняется ли задание, если вы указываете на тот же файл, хранящийся локально?   -  person Ben Watson    schedule 12.07.2019
comment
Ага. В локальном режиме мои локальные файлы успешно запускаются. Единственная проблема в том, что он не работал в режиме mapreduce с такими ошибками: Ooops! Какая-то работа не удалась! Укажите -stop_on_failure, если вы хотите, чтобы Pig немедленно останавливался при ошибке.   -  person sharif2008    schedule 12.07.2019


Ответы (1)


Отчасти проблема в том, что Pig 0.17 еще не поддерживает Hadoop 3.

В выпусках Apache Pig для 0.17 указано:

19 июня 2017 г .: доступна версия 0.17.0

Основным моментом этого выпуска является введение Pig on Spark.

Примечание. Этот выпуск работает с Hadoop 2.X (выше 2.7.x).

И JIRA PIG-5253 - поддержка Pig Hadoop 3 все еще продолжается.

person tk421    schedule 12.07.2019
comment
Спасибо за ссылку :). Я сбит с толку, потому что он работал в локальном режиме. - person sharif2008; 12.07.2019
comment
Да, локальный режим просто использует файловую систему базовой ОС. - person tk421; 12.07.2019
comment
То же самое для улья 3.1.1, но также поддерживает hadoop 3.1.1. . issues.apache.org/jira/browse/HIVE-20022 (просто вставка ссылка здесь в качестве ссылки, если кому-то было полезно) - person sharif2008; 12.07.2019