2015-01-21 64 views
0

我想写一个猪脚本来计算两点之间的距离。 数据输入如何读取猪的csv文件中的下一行

x,y 
0.0,0.0 
18.6,-11.1 
36.1,-21.9 
53.7,-32.6 
70.1,-42.8 
86.5,-52.6 
101.7,-62.3 

距离公式:sqrt((x2-x1)^2 + (y2-y1)^2)

,但我不能在猪读取下一行来计算距离!

任何人都可以帮我吗?

回答

0

如果你能以某种方式为点对生成一个公共标识符,你可以按照它进行分组,然后计算距离。

ID, x, y 
A, 0.0, 0.0 
A, 18.6, -11.1 
B, 36.1, -21.9 
B, 53.7, -32.6 
... 

集团通过将返回类似A, {(0.0, 0.0), (18.6, -11.1)}。现在你可以写一个UDF来调用由计算距离的两点组成的元组。

+0

每组之间的距离如何?在你的例子中,我如何计算A和B之间的距离? – 2015-01-22 02:58:54

+0

对于这种情况下,你需要重复点。事情是map reduce正在处理关键值对,而在猪的情况下,一行(关系中的入口)就是这样一对,所以与其他所有处理都是独立处理的。所以如果你不把它分成一行(键值对),它不能一起处理。 – LiMuBei 2015-01-22 09:18:24

+0

非常感谢您的回复。 – 2015-01-22 09:32:05