我想加入两个不同的MapReduce作业的输出。我希望能够做下面的事情,但是我无法弄清楚如何重用先前工作的结果并将其加入。我该怎么办?

Job1:
Andrea Vanzo, c288f70f-f417-4a96-8528-25c61372cae7, 125

Job2:
c288f70f-f417-4a96-8528-25c61372cae7, 071e1103-1b06-4671-8324-a9beb3e90d18, 25

Result:
Andrea Vanzo, c288f70f-f417-4a96-8528-25c61372cae7,  25

最佳答案

您可以使用JobControl在mappereduce中设置工作流程,顺便说一句,读取job1&job2的输出(使用MultipleInputs)也可以解决您的问题。

使用不同的处理方法并根据数据路径写入数据。

映射器

job1data == job1.path =>拆分写入密钥数据[1],值数据[0] +“tagjob1”

job2data == job2.path =>拆分写入密钥数据[0],值数据[0] +“tagjob2”

reducer
每个键都有它的值集。

将值按“标签”放入两个列表组

写出密钥和每个笛卡尔乘积的两个 list 。

希望

10-08 19:36