Mapreduce多个地图和减速器

时间:2014-03-10 12:01:28

标签: hadoop mapreduce

我有csv文件,数据如下

lat,lng
18.1234,77.3443
18.345,77.335
18.356,77.345

所以基本上包含纬度和经度,每个CSV文件高达1mb,我需要计算距离第一条记录和第二条CSV记录的纬度和经度的距离。

i.e 18.1234, 77.3443 and 18.345, 77.335.

但是从mapper中它会一次读取一行,所以我想在行之间添加分隔符(&#39; |&#39;),因此上面的CSV文件记录将变为一行而输入为Mapper < / p>

Key->Filename
values-> All csv records as one line (all records seprated by delimetr) as text.

filename  18.1234,77.3443|18.345,77.335|18.356,77.345....

在Reducer中,我将按分界线分割并计算后续记录之间的距离[第一和第二坐标]。

因此,如果我有30个CSV文件,我想要30个映射器和30个缩减器来处理这个C​​SV文件。 此外,我需要将此数据存储在MySql中。例如lat,lng,distance

1 个答案:

答案 0 :(得分:0)

如果每个csv文件小于默认块大小,只需获取当前映射器的id并将其作为键发出。

我相信您可以使用映射器配置中的conf.get("mapred.tip.id")获取此ID。