следното е извадка от моя код. Опитвам се да направя демонстрация на брой думи от Стария завет. Когато се опитам да стартирам този код през 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
Началото на примерния текст изглежда така: Текстовият файл е старият завет в обикновен текстов формат. Ето извадка от началото: Електронната книга на проекта Гутенберг на Библията на крал Джеймс Тази електронна книга е за използване от всеки навсякъде безплатно и без почти никакви ограничения. Можете да го копирате, подарявате или използвате повторно съгласно условията на лиценза на проекта Gutenberg, включен в тази електронна книга или онлайн на www.gutenberg.org Заглавие: Библията на крал Джеймс Дата на издаване: 2 март 2011 г. [EBook #10 ] [Тази Библия на крал Джеймс е публикувана първоначално от проект Гутенберг в края на 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