【问题标题】:Apache Spark - Is it possible to compute N to N operations on same RDDApache Spark - 是否可以在同一个 RDD 上计算 N 到 N 个操作
【发布时间】:2015-07-05 23:37:19
【问题描述】:

我目前正在 Python 中使用 Spark 开发应用程序。我有一个酒店数据集如下: ID、酒店名称、地址、....、经度、纬度

我想为每家酒店计算附近的前 5 家酒店。

在 Spark 中可以这样做吗?我不知道我是否可以将我的 RDD 与我的数据集并行化,然后用整个数据集计算每一行。


所以这是我尝试过的: test = booking_data.cartesian(booking_data).map(lambda ((x1, y1),(x2,y2)): distanceBetweenTwoPoints)

distanceBetweenTwoPoints 是我的函数,它计算两个点并采用四个参数。

显示的错误是:ValueError: too many values to unpack

【问题讨论】:

  • 完全有可能。试一试。
  • 不确定我是否理解这个问题。您可以按距离 .filter 数据集,然后执行 .top
  • 抱歉评论不完整:“试一试……如果不起作用,请向我们展示一些代码以提供帮助”
  • 我会尽快做的。感谢您的帮助
  • 这不是 Spark 问题,而是 Python 问题。您需要向我们提供更多代码,并告诉我们错误发生的确切位置。

标签: python apache-spark


【解决方案1】:

我实现了基于网格的搜索算法,以高效查找每家酒店周围的顶级酒店,例如here 解释了这个想法。源码可以在我的GitHub gist找到。

该算法基于将酒店分组到“桶”(网格的单元)中,并将每个酒店也分配到其附近的 8 个桶中。然后通过 groupByKey 将它们组合在一起,并独立于其余数据进行分析。我没有为它运行很多测试,但输出看起来很合理。我希望这有助于将来参考。

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2016-10-31
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多