首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pig:对包中的每个元素应用FOREACH运算符

Pig:对包中的每个元素应用FOREACH运算符
EN

Stack Overflow用户
提问于 2012-08-24 17:18:48
回答 1查看 25K关注 0票数 6

例如:我有一个关系"class",有一个嵌套的学生包:

代码语言:javascript
复制
class: {teacher_name: chararray,students: {(firstname: chararray, lastname: chararray)}

我想对每个学生执行一个操作,同时保持全局结构不变,即获取:

代码语言:javascript
复制
class: {teacher_name: chararray,students: {(fullname: chararray)}

其中,对于每个学生,fullname =CONCAT(名,姓)

我的理解是,嵌套的FOREACH不是我的解决方案,因为它仍然只为每个输入元组生成一条记录,而我希望在每个袋子项中应用一些东西。

使用UDF很容易,但想知道是否有可能在纯Piglatin中实现

EN

回答 1

Stack Overflow用户

发布于 2012-08-26 04:45:57

在PIG 0.10中,可以不使用UDF,因为FOREACH可以嵌套在FOREACH中。下面是一个示例:

代码语言:javascript
复制
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)})
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12106481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档