【问题标题】:how to read next line in csv file in Pig如何在 Pig 中读取 csv 文件中的下一行
【发布时间】:2015-01-21 11:08:39
【问题描述】:

我想写一个猪脚本来计算两点之间的距离。 数据输入是

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)

但我无法读取 Pig 中的下一行来计算距离!

谁能帮帮我?

【问题讨论】:

    标签: csv apache-pig


    【解决方案1】:

    如果您能以某种方式为点对生成一个通用标识符,则可以按此进行分组,然后计算距离。

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

    Group by 将返回类似A, {(0.0, 0.0), (18.6, -11.1)} 的内容。现在您可以编写一个 UDF 来调用由计算距离的两个点组成的元组。

    【讨论】:

    • 每组之间的距离如何?在您的示例中,我如何计算 A 和 B 之间的距离?
    • 对于这种情况,您需要复制点。问题是 map reduce 正在处理键值对,在 pig 的情况下,单行(相关条目)是这样一对,因此独立于所有其他行进行处理。所以如果不把它组合成一行(键值对)就不能一起处理。
    • 非常感谢您的回复。
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多