提取第一列中的数据

i2loujxw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(319)

我有非结构化数据

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;

对于上述输入:键1 | a1 | a11 | a21 | a31 | a41
我需要输出为“a1 | a11 | a21 | a31 | a41”,除了“key1”。
我可以通过指定位置得到值
z11=foreach z1生成$1,$2,$3,$4,$5;
有没有一种方法,我可以提取上述数据不指定位置?

zaq34kh6

zaq34kh61#

如果您不清楚有多少字段,可以使用以下synthax:

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

所以排除了第一个字段 $0 剩下的从第二块开始 $1 没有明确说明所有这些

相关问题