Apache pig 如何将矢量累积到地图中?

Apache pig 如何将矢量累积到地图中?,apache-pig,Apache Pig,我有这样一个别名A: {cookie: chararray, keywords: {tuple_of_tokens: (token: chararray)}, weight: double} 其中第2和第3个字段定义为 keywords = TOKENIZE((chararray)$5,','); weight = 1.0/(double)SIZE(keywords); 现在我想做什么 foreach (group A by cookie) generate group.cookie

我有这样一个别名
A

{cookie: chararray,
 keywords: {tuple_of_tokens: (token: chararray)},
 weight: double}
其中第2和第3个字段定义为

keywords = TOKENIZE((chararray)$5,',');
weight = 1.0/(double)SIZE(keywords);
现在我想做什么

foreach (group A by cookie) generate
  group.cookie as cookie,
  ???? as keywords;
关键字
应该是从关键字映射到权重总和的
映射

例如:

1   k1,k2,k3
1   k2,k4
应该变成

1   {k1:1/3, k2:5/6, k3:1/3, k4:1/2}
我已经在使用了,但我愿意接受任何其他选择…

我会这么做

A_counts=foreach A生成cookie,扁平化(关键字)作为关键字,1.0/大小(关键字)作为权重

然后

A\u counts\u gr=A组依据(cookie,关键字)
result=foreach A\u counts\u gr生成扁平化(组)为(cookie,token),sum(A\u counts\u gr.weight)


然后你可以按cookie分组,得到你想要的包…再次按cookie分组后,会有一个包,然后你可以将这个包变成一个带有datafu的映射…

描述结果
打印
{id:chararray,token:chararray,double}
那里没有
映射
(甚至
)。