是的,在Option1 中,您需要使用STRSPLIT 函数将第二部分拆分为'_' 作为分隔符并转换为包,然后使用COUNT 函数获取最终值。
Option2 很简单,只需TOKENIZE 第二部分以'_' 为分隔符并获取计数。
输入:
1000054,4946631
1000065,4748968
1000067,4944640_5071294_5312208
1000086,4178246_4217220_4686189_4839046
PigScript1:
A = LOAD 'input' USING PigStorage(',') AS(f1:int,f2:chararray);;
B = FOREACH A GENERATE f1, FLATTEN(STRSPLIT(f2,'_'));
C = FOREACH B GENERATE $0,COUNT(TOBAG($1..));
DUMP C;
PigScript2:
A = LOAD 'input' USING PigStorage(',') AS(f1:int,f2:chararray);;
B = FOREACH A GENERATE f1, COUNT(TOKENIZE(f2,'_'));
DUMP B;
输出:
(1000054,1)
(1000065,1)
(1000067,3)
(1000086,4)