我正在写作,因为今天我碰到了一个问题,尽管我已经到处搜索并尝试了很多不同的陈述,但我无法以任何方式解决这个问题。 我有这个输入文件:
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 :(得分:0)
这里的问题是你使用''作为分隔符并且包含''。解决方法是将记录加载到一行中,然后使用STRSPLIT将行拆分为2个字段。
wc = LOAD 'input.txt' AS (line:chararray);
wc_new = FOREACH wc GENERATE STRSPLIT(line,' ',2);
DUMP wc_new;