Pig Latin:加载一个非常简单的包

时间:2016-11-26 18:06:31

标签: hadoop tuples apache-pig dump

我正在写作,因为今天我碰到了一个问题,尽管我已经到处搜索并尝试了很多不同的陈述,但我无法以任何方式解决这个问题。 我有这个输入文件:

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)})

你有什么想法解决它吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这里的问题是你使用''作为分隔符并且包含''。解决方法是将记录加载到一行中,然后使用STRSPLIT将行拆分为2个字段。

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