我是Hadoop的新手,我试图在Java中运行hadoop mapreduce作业以加入一些数据并将其输出为CSV文件。我正在使用hadoop 3.1.1。我有一个包含混合数据的数据集,并且这些数据每天都是JSON文件。每条记录一行,每条记录都有一个连接键(id),还有一个具有不同值的类型(typeA,typeB等)以及一些其他字段。我下面有很多行,由于JSON文件的分区,typeA和typeB可能相距很远
外观如下:
id starttime endtime type otherfields
1 x y typeA foo,bar
1 a b typeB hello,world
2 p q typeA foo,bar
2 r s typeC hadoop,mapreduce
1 c d typeB foo1,bar1
现在我的用例是使用连接键(id)专门连接typeA和typeB,我希望结果如下所示
我还要添加一个ID相同的typeA可以有很多typeB记录。有一对多的关系,所以我想为每个重复重复typeA值的typeB记录添加两行。
id,starttimetypeA,endtimetypeA,starttimetypeB,endtimetypeB,otherfieldstypeA,otherfieldstypeB
1, x, y, p, q, foo, bar, hello, world
1, x, y, c, d, foo1, bar1, hello, world
我一直在阅读有关地图侧连接和减少侧连接的信息。解决加入此混合数据集的最佳策略是什么?