2016-11-26 66 views
0

我在写,因为今天我遇到了一个问题,尽管到处搜索并尝试了很多不同的陈述,但我无法以任何方式解决问题。 我有这个输入文件:猪拉丁语:加载一个非常简单的包

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;