求教,怎样用hadoop求两个集合中点的距离小于1的所有点
renwu13
2014-02-01
在hadoop in actin第111页看到的思考题,两个集合都是由很多点组成,点的位置由xy坐标系(x,y)定位,怎样使用hadoop的MapReduce求出集合A中所有距离集合B中点距离小于1的点?
|
|
jd2bs
2014-02-06
设A(X1,Y1)、B(X2,Y2),
则∣AB∣=√[(X1-X2)^2+(Y1-Y2)^2] 在Map函数中将点从文件A和B输入,做如上运算,将值保存起来 Reduce函数中判断直大小,如果小于1就是符合条件的,将之输出到out文件 就是一个简单的批处理,别想太复杂了 |
|
backkom1982
2014-02-07
如果A和B中都有100万的点,那就是标准的笛卡尔运算,要计算100W×100W次,其实没有那么多,因为不论x坐标或y坐标相差大于1,那这两个点的距离就会超过1.
在一本算法书中,看到过如何寻找比较近的点,网上应该能搜到。 如果用Map/reduce算,应该是很按某种算法分区域(比如x/y坐标差都小于1的点放到一起),再对小区域内的数据再用map/reduce运算一次找出距离小于1的点 |
|
backkom1982
2014-02-07
这个算法应该是分治法.可以参考这个:
http://blog.csdn.net/wypblog/article/details/7295797 |