组运算符和组与 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的主要内容,如果未能解决你的问题,请参考以下文章

用户和组与进程凭证

Python3元组

将索引与 Mongo 的 $first 组运算符一起使用

Linux查看所有用户和组信息

linux 用户和组管理命令

Python3的 元组(Tuple)