使用hadoop mapreduce我有一个列表作为输入:一bc我想得到列表的笛卡尔积:a=>a,f(a,a)a=>b,f(a,b)a=>c,f(a,c)b=>a,f(b,a)b=>b,f(b,b)b=>c,f(b,c)c=>a,f(c,a)c=>b,f(c,b)c=>c,f(c,c)f()是为一对键提供值的函数。如何在java中使用hadoopmapreduce以一种简单的方式做到这一点?当然,我不能在内存中保存整个输入列表。谢谢!!
3df52oht1#
您可以在javamap-reduce中实现它。让我们假设,你想在两个文件a和b之间做叉积,分别用3和4进行分割。然后必须编写自定义输入格式,将两个数据集拆分,然后确保每个数据子集都有一个拆分。所以你的分裂看起来像:
A1 X B1 A1 X B2 A1 X B3 A1 X B4 A2 X B1 A2 X B2 A2 X B3 A2 X B4 A3 X B1 A3 X B2 A3 X B3 A3 X B4
使用链接https://github.com/adamjshook/mapreducepatterns/blob/master/mrdp/src/main/java/mrdp/ch5/cartesianproduct.java 供参考。
1条答案
按热度按时间3df52oht1#
您可以在javamap-reduce中实现它。让我们假设,你想在两个文件a和b之间做叉积,分别用3和4进行分割。然后必须编写自定义输入格式,将两个数据集拆分,然后确保每个数据子集都有一个拆分。
所以你的分裂看起来像:
使用链接https://github.com/adamjshook/mapreducepatterns/blob/master/mrdp/src/main/java/mrdp/ch5/cartesianproduct.java 供参考。