我有一个userid,itemid ratings矩阵形式的数据集,我正试图将其转换为{userid,itemid,rating}形式,以便与基于mahout项的推荐程序一起使用,如下所述:https://mahout.apache.org/users/recommender/userbased-5-minutes.html#dataset.
换言之,我想转换如下内容:
1 2 3
1 1.0 2.0 3.0
2 4.0 5.0 6.0
3 7.0 8.0 9.0
变成这样:
1,1,1.0
1,2,2.0
1,3,3.0
2,1,4.0
2,2,5.0
2,3,6.0
3,1,7.0
3,2,8.0
3,3,9.0
有没有一种方法可以使用apachehadoop工具(pig、hive等)来实现这一点?
1条答案
按热度按时间n8ghc7c11#
你可以用
explode
(在Hive中):如果输入表如下所示:
那么您的查询可以是:
说明:内部查询生成以下输出:
然后在分解之后,每一行都有userid、itemid和value—只需要拆分itemid和value。
另外,如果表的itemids定义为
double
,你需要CAST(item2 as string)
在把他们送进去之前concat_ws
.