hadoop笛卡尔积

pbpqsu0x  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(519)

使用hadoop mapreduce
我有一个列表作为输入:

b
c
我想得到列表的笛卡尔积:
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以一种简单的方式做到这一点?
当然,我不能在内存中保存整个输入列表。
谢谢!!

3df52oht

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 供参考。

相关问题