我正在使用hadoop map reduce,我想计算两个文件.我的第一个Map/Reduce迭代给了我一个带有ID号码的文件,如下所示:
A 30
D 20
Run Code Online (Sandbox Code Playgroud)
我的目标是使用文件中的ID与另一个文件关联,并使用另一个三重奏输出:ID,Number,Name,如下所示:
A ABC 30
D EFGH 20
Run Code Online (Sandbox Code Playgroud)
但我不确定使用Map Reduce是否是最好的方法.例如,使用文件读取器读取第二个输入文件并通过ID获取名称会更好吗?或者我可以使用Map Reduce吗?
如果是这样,我正在试图找出方法.我尝试了一个MultipleInput解决方案:
MultipleInputs.addInputPath(job2, new Path(args[1]+"-tmp"),
TextInputFormat.class, FlightsByCarrierMapper2.class);
MultipleInputs.addInputPath(job2, new Path("inputplanes"),
TextInputFormat.class, FlightsModeMapper.class);
Run Code Online (Sandbox Code Playgroud)
但我想不出任何解决方案将两者结合起来并得到我想要的输出.我现在的方式是给我这样的列表:
A ABC
A 30
B ABCD
C ABCDEF
D EFGH
D 20
Run Code Online (Sandbox Code Playgroud)
在我最后减少之后我得到了这个:
N125DL 767-332
N125DL 7 ,
N126AT 737-76N
N126AT 19 ,
N126DL 767-332
N126DL 1 ,
N127DL 767-332
N127DL 7 ,
N128DL 767-332
N128DL 3
Run Code Online (Sandbox Code Playgroud)
我想要这个:N127DL 7 767-332.而且,我不希望那些没有结合的.
这是我的减少类:
公共类FlightsByCarrierReducer2延伸减速机{
String merge = "";
protected void reduce(Text token, Iterable<Text> …Run Code Online (Sandbox Code Playgroud)