提取 Pig 中的数据,不包括第一列
Extract data in Pig excluding first column
我有非结构化数据
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 [=11=] == 'key1', z2 if [=11=] == 'key2', z3 if [=11=] == 'key3', z4 if [=11=] == 'key4';
z11 = foreach z1 generate ,,,,;
z22 = foreach z2 generate ,;
z33 = foreach z3 generate ,,;
z44 = foreach z4 generate ;
以上输入:key1|a1|a11|a21|a31|a41
我需要输出 "a1|a11|a21|a31|a41" 除了 "key1".
我可以通过指定位置来获取值
z11 = foreach z1 生成 $1,$2,$3,$4,$5;
有什么方法可以在不指定位置的情况下提取上述数据?
如果你不知道你有多少字段,你可以使用这个语法:
z11 = foreach z1 generate ..;
z22 = foreach z2 generate ..;
z33 = foreach z3 generate ..;
z44 = foreach z4 generate ..;
因此您排除了第一个字段 [=11=]
并保留从第二个字段开始的其余部分
而无需明确指定所有字段
我有非结构化数据
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 [=11=] == 'key1', z2 if [=11=] == 'key2', z3 if [=11=] == 'key3', z4 if [=11=] == 'key4';
z11 = foreach z1 generate ,,,,;
z22 = foreach z2 generate ,;
z33 = foreach z3 generate ,,;
z44 = foreach z4 generate ;
以上输入:key1|a1|a11|a21|a31|a41
我需要输出 "a1|a11|a21|a31|a41" 除了 "key1".
我可以通过指定位置来获取值
z11 = foreach z1 生成 $1,$2,$3,$4,$5;
有什么方法可以在不指定位置的情况下提取上述数据?
如果你不知道你有多少字段,你可以使用这个语法:
z11 = foreach z1 generate ..;
z22 = foreach z2 generate ..;
z33 = foreach z3 generate ..;
z44 = foreach z4 generate ..;
因此您排除了第一个字段 [=11=]
并保留从第二个字段开始的其余部分 而无需明确指定所有字段