我有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个缩减器来处理这个CSV文件。 此外,我需要将此数据存储在MySql中。例如lat,lng,distance
答案 0 :(得分:0)
如果每个csv文件小于默认块大小,只需获取当前映射器的id并将其作为键发出。
我相信您可以使用映射器配置中的conf.get("mapred.tip.id")
获取此ID。