2016-09-10 2 views
0

Я новичок в свинье. Я пытаюсь отфильтровать текстовый файл и сохранить его в hbase. Вот пример файла вводаСвинья скрипт фильтр получения файла ОШИБКА

sample.txt

{"pattern":"google_1473491793_265244074740","tweets":[{"tweet::created_at":"18:47:31 ","tweet::id":"252479809098223616","tweet::user_id":"450990391","tweet::text":"rt @joey7barton: ..give a google about whether the americans wins a ryder cup. i mean surely he has slightly more important matters. #fami ..."}]} 
{"pattern":"facebook_1473491793_265244074740","tweets":[{"tweet::created_at":"11:33:16 ","tweet::id":"252370526411051008","tweet::user_id":"845912316","tweet::text":"@maarionymcmb facebook mere ta dit tu va resté chez toi dnc tu restes !"}]} 

Сценарий:

data = load 'sample.txt' using JsonLoader('pattern:chararray, tweets: bag {t1:tuple(tweet::created_at: chararray,tweet::id: chararray,tweet::user_id: chararray,tweet::text: chararray)}'); 
A = FILTER data BY pattern == 'google_*'; 
grouped = foreach (group A by pattern){tweets1 = foreach data generate tweets.(created_at),tweets.(id),tweets.(user_id),tweets.(text); generate group as pattern1,tweets1;} 

Но я получил эту ошибку при запуске сгруппированных:

2016-09-10 13:38:52,995 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse: <line 41, column 57> expression is not a project expression: (Name: ScalarExpression) Type: null Uid: null) 
+0

1. Какой результат вы ожидаете получить? Это (шаблон, created_at, id, user_id, text), который является шаблоном + одиночный твит на запись? 2. Фильтр перепутан; иметь только код google_ * pattern A = FILTER data BY pattern соответствует 'google _. *'; Однако это не причина вашего исключения. – patrungel

+0

Спасибо за ваш ответ @ patrungel.the ожидаемый результат как (шаблон) ({заполните все твиты}. Не могли бы вы предложить мне, как я могу это получить. – Bunny

ответ

0

В вложенные вы не можете ссылаться «твиты», вам нужно «A». См. Мой пример ниже.

grouped = FOREACH (GROUP A BY pattern) { 
GENERATE groups AS pattern, A.created_at, A.id, A.user_id, A.text; 
}; 
+0

Для этого, чтобы работать с данным вводом, твиты из отношения 'A' должен быть сначала плоский, поскольку в настоящее время это мешок твитов, хотя каждая запись из данного набора данных имеет только одну запись в сумке. – patrungel

+0

Да, хороший улов. Я не обращал достаточного внимания на формат входных данных. –

Смежные вопросы