【问题标题】:nested group by in pyspark在 pyspark 中嵌套 group by
【发布时间】:2017-10-29 15:21:34
【问题描述】:

在 Spark 中,我按餐厅名称上的食品检验数据集进行分组。在以下示例中,它是“ZED 451”。因此,键是“ZED 451”,值是与这家餐厅相关的所有检查的列表。

(u'ZED 451', [(u'1975848', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'"), (u'1609466', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'"), (u'1139101', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'"), (u'114380', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'")])

现在,我正在尝试对这个分组数据集进行辅助分组。我想做的第二组是在纬度和经度上识别相同的“ZED 451”分支。我已经尝试了所有可能的方法来做第二组,但没有任何成功。任何关于如何在不使用 Spark SQL 或 Spark DataFrames 的情况下继续进行的帮助将不胜感激。

PS:我希望我的输出看起来像这样:

(u'ZED 451', [(u'41.89574704893414', u'-87.6310791667675'", [(u'1975848', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654'), (u'1609466', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654'), (u'1139101', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654'), (u'114380', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654')])]

在这种情况下,所有餐馆的实例都指向同一个分支,因此有一个 lat 和 long 键,它的值是所有这些实例的列表。但在其他条目中,存在多个具有多个 lat's 和 long's 的分支。

感谢您的帮助!

【问题讨论】:

  • 在第一个 groupBy 之后,而不是第二个 groupBy,使用 mapValues 怎么样?数组[餐厅] -> 数组[(长,纬度,数组[餐厅])]。只是一个想法

标签: apache-spark pyspark rdd bigdata


【解决方案1】:

groupBy(名称,长,纬度)。 然后按名称分组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多