我有很多袋子,我想计算袋子之间的成对相似性。
sequences = FOREACH raw GENERATE gen_bag(logs);
关系描述如下:
sequences: {t: (type: chararray, value:charray)}
相似性由Python UDF计算,它以两个包作为参数。我试图在序列变量上做一个嵌套的foreach,但我不能在同一个关系上循环两次。我也尝试过两次定义序列,但是我无法访问foreach中的副本。我也不确定如何能够提出一个允许我做这样的事情的数据结构。我怎么能这样做?
答案 0 :(得分:0)
听起来你可以加载源数据的两个副本,执行交叉产品,然后通过在每对上调用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);