我正在使用hadoop map reduce,我想计算两个文件.我的第一个Map/Reduce迭代给了我一个带有ID号码的文件,如下所示:
A 30 D 20
我的目标是使用文件中的ID与另一个文件关联,并使用另一个三重奏输出:ID,Number,Name,如下所示:
A ABC 30 D EFGH 20
但我不确定使用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);
但我想不出任何解决方案将两者结合起来并得到我想要的输出.我现在的方式是给我这样的列表:
A ABC A 30 B ABCD C ABCDEF D EFGH D 20
在我最后减少之后我得到了这个:
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
我想要这个:N127DL 7 767-332.而且,我不希望那些没有结合的.
这是我的减少类:
公共类FlightsByCarrierReducer2延伸减速机{
String merge = ""; protected void reduce(Text token, Iterablevalues, Context context) throws IOException, InterruptedException { int i = 0; for(Text value:values) { if(i == 0){ merge = value.toString()+","; } else{ merge += value.toString(); } i++; } context.write(token, new Text(merge)); }
}
更新:
http://stat-computing.org/dataexpo/2009/the-data.html这是我正在使用的例子.
我正在尝试:TailNum和Canceled,它是(1或0)获取对应于TailNum的模型名称.我的模型文件有TailNumb,Model和其他东西.我目前的输出是:
N193JB ERJ 190-100 IGW
N194DN 767-332
N19503 EMB-135ER
N19554 EMB-145LR
N195DN 767-332
N195DN 2
首先是钥匙,第二是模型,有航班取消的钥匙,在模型下面出现
我想要一个三重键,取消的型号,因为我想要每个型号的取消数量