组运算符和组与 GROUP
Posted
技术标签:
【中文标题】组运算符和组与 GROUP【英文标题】:group operator and group vs. GROUP 【发布时间】:2014-05-21 23:47:48 【问题描述】:group
在http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#FOREACH 的以下两个示例中做了什么:
示例:嵌套投影
在这个例子中,如果输入关系中的一个字段是元组、袋子或映射,我们可以在该字段上执行投影(使用尊重运算符)。
X = FOREACH C GENERATE 组,B.b2;
转储 X; (1,(3)) (4,(6),(9)) (8,(9))
在此示例中,保留了多个嵌套列。
X = FOREACH C GENERATE 组,A.(a1, a2);
转储 X; (1,(1,2)) (4,(4,2),(4,3)) (8,(8,3),(8,4))
使用group
和使用GROUP
有什么区别吗?
例子:
示例:展平
在本例中,FLATTEN 运算符用于消除嵌套。
X = FOREACH C GENERATE 组,FLATTEN(A);
转储 X; (1,1,2,3) (4,4,2,1) (4,4,3,3) (8,8,3,4) (8,8,4,3)
另一个 FLATTEN 示例。
X = FOREACH C 生成组,展平(A.a3);
转储 X; (1,3) (4,1) (4,3) (8,4) (8,3)
【问题讨论】:
【参考方案1】:来自http://pig.apache.org/docs/r0.11.0/basic.html#GROUP
The first field is named "group" (do not confuse this with the GROUP operator) and is the same type as the group key.
字段名称区分大小写,因此不会有由GROUP
运算符创建的字段“GROUP”。在我看来,这是 pig 文档中的一个小错误。
【讨论】:
与我关于“group”的问题最相关的部分是“继续,如这些 FOREACH 语句所示,我们可以通过名称“group”和“A”来引用关系 B 中的字段或通过位置符号”(来自答案中给出的the link)。有人会解释“组”在那种情况下的用法吗?以上是关于组运算符和组与 GROUP的主要内容,如果未能解决你的问题,请参考以下文章