ниже приведен пример моего кода. Я пытаюсь сделать демонстрацию количества слов Ветхого Завета. Когда я пытаюсь запустить этот код через Amazon EMR, этот шаг не выполняется. Я загрузил код в EMR в виде простого текстового файла, и все мои пути верны.
Вот мой код:
a = load 's3://joe-hadoop-first-try/oldtest/oldtest.txt' as (f1:chararray);
b = foreach a generate FLATTEN(TOKENIZE(f1)) as word;
c = group b by word;
d = FOREACH c GENERATE COUNT(b), group;
store d into 's3://joe-hadoop-first-try/wordcountoutput';
Вот вывод ошибки:
3904 [main] ERROR org.apache.pig.PigServer - exception during parsing: Error during parsing. <file s3://joe-hadoop-first-try/input/wordcountoldtest.txt, line 2, column 52> mismatched input '$0' expecting RIGHT_PAREN
Начало текста образца выглядит так: Текстовый файл представляет собой ветхий завет в текстовом формате. Вот пример начала: Проект Гутенберг Электронная книга Библии короля Иакова Эта электронная книга предназначена для использования кем угодно и где угодно бесплатно и почти без каких-либо ограничений. Вы можете копировать, отдавать или повторно использовать ее в соответствии с условиями лицензии Project Gutenberg, прилагаемой к этой электронной книге, или в Интернете по адресу www.gutenberg.org Название: Библия короля Иакова Дата выпуска: 2 марта 2011 г. [Электронная книга №10 ] [Эта Библия короля Иакова была первоначально опубликована Project Gutenberg в конце 1989 года]
Кроме того, эта ошибка по-прежнему возникает, когда текстовый файл содержит только:
helloworld
Используется как ввод
Вот попытка решения с использованием схемы:
a = load 's3://joe-hadoop-first-try/oldtest/oldtest.txt' as (f1:chararray);
b = foreach a generate FLATTEN(TOKENIZE(f1)) as word;
c = group b by word;
d = FOREACH c GENERATE COUNT(b), group;
store d into 's3://joe-hadoop-first-try/wordcountoutput';
Этот код работает сейчас! Исправил все ошибки
load 'path' as (f1:chararray)
, затем используйтеf1
вместо$0
- person OneCricketeer   schedule 31.12.2015a = load 's3://...'
, дайте там схему. Также как вы ожидаете, что данные вa
будут загружены? По умолчанию текст будет разбит на табы. - person OneCricketeer   schedule 31.12.2015f1
, поэтому вы можете удалить(chararray)
- person OneCricketeer   schedule 31.12.2015