示例:我有一个关系"class",有一个嵌套的学生包:
class: {teacher_name: chararray,students: {(firstname: chararray, lastname: chararray)}
Run Code Online (Sandbox Code Playgroud)
我想对每个学生进行操作,同时保持全局结构不受影响,即获得:
class: {teacher_name: chararray,students: {(fullname: chararray)}
Run Code Online (Sandbox Code Playgroud)
每个学生的位置,fullname = CONCAT(名字,姓氏)
我的理解是嵌套的FOREACH不是我的解决方案,因为它仍然只为每个输入元组生成1条记录,而我想要在每个包项目中应用的东西.
使用UDF非常容易,但想知道是否可以在纯粹的Piglatin中进行
ale*_*pab 19
在PIG 0.10中,没有UDF是可能的,因为FOREACH可以嵌套在FOREACH中.这是一个例子:
inpt = load '~/pig/data/bag_concat.dat' as (k : chararray, c1 : chararray, c2 : chararray);
dump inpt;
1 q w
1 s d
2 q a
2 t y
2 u i
2 o p
bags = group inpt by k;
describe bags;
bags: {group: chararray,inpt: {(k: chararray,c1: chararray,c2: chararray)}}
result = foreach bags {
concat = foreach inpt generate CONCAT(c1, c2); --it will iterate only over the records of the inpt bag
generate group, concat;
};
dump result;
(1,{(qw),(sd)})
(2,{(qa),(ty),(ui),(op)})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24305 次 |
| 最近记录: |