2016-11-26 9 views
0

Я пишу, потому что сегодня я столкнулся с проблемой, которую я никак не могу решить, несмотря на то, что искал всюду и пробовал множество разных заявлений. У меня есть этот входной файл:Pig Latin: Загрузка очень простой сумки

3 {(car pen house glass)} 
5 {(battery phone)} 
6 {(the)} 

(я хотел бы уточнить, что я добавил «(» и «)» к исходному файлу, так как они отсутствовали). Моя цель - загрузить этот файл (используя LOAD) в переменную и сбросить его (используя DUMP).

я показываю ниже попыток я сделал и их относительных DUMP выходов:

wc = LOAD 'input.txt' USING PigStorage(' ') AS (count:int,b:bag{(s:chararray)}); 

(3,) 
(5,) 
(6,{(the)}) 


wc = LOAD 'input.txt' USING PigStorage(' ') AS (count:int,b:tuple(s:chararray)); 

(3,) 
(5,) 
(6,(the)) 


wc = LOAD 'input.txt' USING PigStorage(' ') AS (count:int,b:bag{item:tuple(s:chararray)}); 

(3,) 
(5,) 
(6,{(the)}) 

Есть ли у вас какие-либо идеи, чтобы решить эту проблему?

Заранее спасибо.

ответ

0

Проблема в том, что вы используете '' в качестве разделителя, а сумка содержит ''. Обходной способ заключается в загрузке записей в строку и затем использовании STRSPLIT для разделения строки на 2 поля.

wc = LOAD 'input.txt' AS (line:chararray); 
wc_new = FOREACH wc GENERATE STRSPLIT(line,' ',2); 
DUMP wc_new; 

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

  • Нет связанных вопросов^_^