我有一个csv文件,其中包含4列数据,但有250000行。
A B C D
Tom 1 x Blah Blah Blah
Bob 2 y Blah <p> Blah
Jane 3 z Blah, &p *£
Harry 4 a Blah "p" Blah
在第4栏中,我有一个字符串,其中包含各种字符,一些代码,一些特殊字符,一些文本。
我想把D中的每个单词与A中的内容结合起来并将其存储在一个新行中,即
Tom Blah
Tom Blah
Tom Blah
Bob Blah
Bob <p>
Bob Blah
Jane Blah,
Jane &p
Jane *£
Harry Blah
Harry "p"
Harry Blah
答案 0 :(得分:1)
您必须使用STRSPLIT和TOBAG将数据集第4列中的值转换为首先拆分数据并将其转换为行。最后CONCAT结果带有''。
的2列猪脚本
A = LOAD 'test6.txt' USING PigStorage('\t') AS (f1:chararray,f2:chararray,f3:chararray,f4:chararray);
B = FOREACH A GENERATE f1,FLATTEN(STRSPLIT(f4,' '));
C = FOREACH B GENERATE $0,FLATTEN(TOBAG($1,$2,$3));
D = FOREACH C GENERATE CONCAT($0,CONCAT(' ',$1));
DUMP D;;
<强>输出强>