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

Apache pig 在PIG的嵌套FOREACH中使用过滤器,apache-pig,Apache Pig,我有两只猪的亲戚。第一个count\u pairs显示成对的单词以及它们被看到的次数。ex((汽车、轮胎)4)。第二个是单词计数,它记录每个单词被看到的次数,例如(car,20)。我想找出每对单词被看到的次数与第一个单词被看到的次数的百分比。在我们的情况下,我想要((汽车,轮胎),4/20)。我试图编写一个嵌套的foreach来解决这个问题: > percent_count_pairs = FOREACH count_pairs { > denom = FILTER word_cou

我有两只猪的亲戚。第一个
count\u pairs
显示成对的单词以及它们被看到的次数。ex
((汽车、轮胎)4)
。第二个是
单词计数
,它记录每个单词被看到的次数,例如
(car,20)
。我想找出每对单词被看到的次数与第一个单词被看到的次数的百分比。在我们的情况下,我想要
((汽车,轮胎),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)'
“Pig脚本无法分析:
表达式不是项目表达式:(名称:ScalarExpression)类型:null Uid:null)'
该点指向带有
过滤器的行
; 用谷歌搜索这个错误并没有给我带来任何帮助。请帮忙!
(注:如果我从foreach中取出带有
FILTER
的行,这确实有效…

在更多的谷歌搜索之后,我意识到这是Pig中的一个bug,不允许这样做:
. 我最终编写了自己的UDF进行筛选。

很酷的嵌套FOREACH解决方案,我也很好奇,你尝试过加入吗?e、 例如:pairs\u word\u counts=按单词连接单词,按单词对计数;pair\u ratio=FOREACH pairs\u word\u counts生成count\u pairs::pair,count\u pairs::pair.count/word\u counts::count;你不能用命令和限制命令实现同样的效果吗?