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