我正在使用 Apache Pig 和 Mahout。现在我正在研究 apache mahout 的频繁模式增长。我有以下格式的数据
user items
1 i1
1 i2
1 i3
2 i2
2 i5
2 i6
3 i1
3 i4
--加载数据
data = LOAD '$input' AS (user,item);
然后我按用户对数据进行分组
grpdata = GROUP data BY user;
我明白了
1 {(1,i1),(1,i2),(1,i3)}
2 {(2,i2),(2,i5),(2,i6)}
3 {(3,i1),(3,i4)}
这是我的问题,如何将分组后创建的包更改为以下格式
1 i1,i2,i3
2 i2,i5,i6
3 i1,i4
最佳答案
使用bag projection可以只获取你感兴趣的字段:
proj = FOREACH grpdata GENERATE group, data.item;
这会给你
1 {(i1),(i2),(i3)}
2 {(i2),(i5),(i6)}
3 {(i1),(i4)}
不幸的是,没有内置功能可以修改将包序列化为字符串的方式。您将需要编写一个 UDF 来为您完成这部分工作。
关于hadoop - 如何在 apache pig 中将组转换为集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773570/