在PIG中的嵌套FOREACH中使用过滤器

时间:2011-11-22 23:12:39

标签: apache-pig

我有两只猪的关系。第一个count_pairs显示单词对和看到的次数。前((car,tire), 4)。第二个是word_counts,它跟踪每个单词被看到的次数。 (car, 20)。我想找到每对看到的次数的百分比与看到的第一个单词的次数相比。在我们的例子中,我想要((car,tire), 4/20)。我试着写一个嵌套的foreach来解决这个问题:

> percent_count_pairs = FOREACH count_pairs {
> denom = FILTER word_counts BY ($0 ==count_pairs.pair.word1);
> GENERATE pair, count2/(double)denom.$1;}

我一直收到这个错误:

'Pig script failed to parse: 
<file src/cluster.pig, line 27, column 15> expression is not a project expression: (Name: ScalarExpression) Type: null Uid: null)'

这指向FILTER的行; 谷歌搜索这个错误并没有让我有所帮助。请帮忙! (ps。如果我从foreach中取出FILTER行,这确实有效。)

1 个答案:

答案 0 :(得分:2)

经过更多的谷歌搜索后,我意识到这是Pig中的一个错误,不允许这样: https://issues.apache.org/jira/browse/PIG-1798。我最终编写了自己的UDF进行过滤。