在猪排除第一列中提取数据

时间:2017-05-19 12:50:06

标签: hadoop apache-pig

我有非结构化数据

key1|a1|a11|a21|a31|a41
key2|b1|b11
key3|c1|c11|c21
key4|d1
key2|b101|b111
key1|a101|a111|a121|a131|a141

基于第一列,记录被拆分并分发到目录。

z = load '/user/input/data.txt' using PigStorage('|');
split z into z1 if $0 == 'key1', z2 if $0 == 'key2', z3 if $0 == 'key3', z4 if $0 == 'key4';
z11 = foreach z1 generate $1,$2,$3,$4,$5;
z22 = foreach z2 generate $1,$2;
z33 = foreach z3 generate $1,$2,$3;
z44 = foreach z4 generate $1;

对于上述输入:key1 | a1 | a11 | a21 | a31 | a41

我需要输出为“a1 | a11 | a21 | a31 | a41”,“key1”除外。

我可以通过指定位置来获取值

z11 = foreach z1产生$ 1,$ 2,$ 3,$ 4,$ 5;

有没有办法,我可以在不指定位置的情况下提取上述数据?

1 个答案:

答案 0 :(得分:1)

如果你不熟悉你有多少场,你可以使用这个合成器:

z11 = foreach z1 generate $1..;
z22 = foreach z2 generate $1..;
z33 = foreach z3 generate $1..;
z44 = foreach z4 generate $1..;

因此,您排除第一个字段$0,并将其余字段从第二个字段$1开始,而不是明确指定所有字段