hadoop - PIG Latin 中 FLATTEN 运算符的用途是什么

标签 hadoop apache-pig

A = 将“数据”加载为 (x, y);

B = 将“数据”加载为 (x, z);

C = cogroup A by x, B by x;

D = foreach C 生成 flatten(A), flatten(b);

E = A::x 组 D

在上面的语句中到底做了什么以及我们在实时场景中使用了展平的地方。

最佳答案

A = load 'input1'   USING PigStorage(',') as (x, y);
(x,y) --> (1,2)(1,3)(2,3)
B = load 'input2'  USING PigStorage(',') as (x, z);`
(x,z) --> (1,4)(1,2)(3,2)*/
C = cogroup A by x, B by x;`

result:

(1,{(1,2),(1,3)},{(1,4),(1,2)})
(2,{(2,3)},{})
(3,{},{(3,2)})


D = foreach C generate group, flatten(A), flatten(B);`

when both bags flattened, the cross product of tuples are returned.  

result:
(1,1,2,1,4)
(1,1,2,1,2)
(1,1,3,1,4)
(1,1,3,1,2)  

E = group D by A::x`

here your are grouping with x column of relation A.

(1,1,2,1,4) (1,1,2,1,2) (1,1,3,1,4) (1,1,3,1,2)

关于hadoop - PIG Latin 中 FLATTEN 运算符的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28472179/

相关文章:

hadoop - Pig 0.7.0错误2118:无法在Hadoop 1.2.1上创建输入拆分

hadoop - 计算 pig latin 中的标签

hadoop - 在hadoop上运行mahout的fpg算法作为集群模式

hadoop - 如何登录到实时公司hadoop集群?

hadoop - Sparks作业卡在多节点 yarn 簇中

shell - 如何获取 Pig 脚本的准确返回值并将其用于进一步处理?

apache-pig - 在嵌入式 pig 程序中执行具有多个商店的 pig 脚本文件

java - Rhadoop 单机基本任务

hadoop - Hadoop DistributedCache类路径解析

string - 查找一个字符串是否存在于 Pig 中的另一个字符串中