Apache Pig - 在相同关系上嵌套 FOREACH

Posted

技术标签:

【中文标题】Apache Pig - 在相同关系上嵌套 FOREACH【英文标题】:Apache Pig - nested FOREACH over same relation 【发布时间】:2016-11-01 11:07:49 【问题描述】:

我有很多袋子,我想计算袋子之间的成对相似度。

sequences = FOREACH raw GENERATE gen_bag(logs);

关系描述如下:

sequences: t: (type: chararray, value:charray)

相似度是由一个 Python UDF 计算的,它接受两个包作为参数。我试图在序列变量上做一个嵌套的 foreach,但我不能循环两次相同的关系。我也尝试过两次定义序列,但我无法访问 foreach 中的副本。我也不确定如何想出一个允许我做这样的事情的数据结构。我该怎么做?

【问题讨论】:

【参考方案1】:

听起来您可以加载两个源数据副本,执行一个叉积,然后在每一对上迭代调用您的 UDF。比如:

sequences_A = FOREACH raw GENERATE gen_bag(logs);
sequences_B = FOREACH raw GENERATE gen_bag(logs);
all_pairs = CROSS sequences_A, sequences_B;
FOREACH all_pairs GENERATE myudf(first_bag, second_bag);

【讨论】:

以上是关于Apache Pig - 在相同关系上嵌套 FOREACH的主要内容,如果未能解决你的问题,请参考以下文章

apache pig中的嵌套组

Apache PIG - 分组

在 Apache Pig 中过滤数据

Apache pig:检查 cvs 输入中存在多少具有相同数字的行(任意组合)

Apache Pig - 在猪关系中加载时缺少数字数据

PIG FILTER 关系与下一行相同的关系