【问题标题】:How to use GroupByKey on multiple keys in pyspark?如何在 pyspark 中的多个键上使用 GroupByKey?
【发布时间】:2017-08-31 19:55:27
【问题描述】:

我有一些看起来像这样的数据:

([('01','A','2016-01-01','8701','123','2016-10-23'),('01','A','2016-
01-01','8701','123','2016-11-23'),('01','A','2016-01-01','8701','123','2016-12-23')])

我的目标是在 PySpark 中按 ('01','A','2016-01-01','8701','123') 分组并让它看起来像

[('01','A','2016-01-01''8701','123', ('2016-10-23', '2016-11-23', 
'2016-12-23'))]

我尝试使用 groupByKey 但对我不起作用。

谢谢。

【问题讨论】:

    标签: apache-spark pyspark rdd


    【解决方案1】:

    groupBy + map:

    rdd = sc.parallelize(([('01','A','2016-01-01','8701','123','2016-10-23'),('01','A','2016-01-01','8701','123','2016-11-23'),('01','A','2016-01-01','8701','123','2016-12-23')]))
    
    rdd.groupBy(lambda x: x[:-1]).map(lambda g: g[0] + (tuple(x[-1] for x in g[1]),)).collect()
    # [('01', 'A', '2016-01-01', '8701', '123', ('2016-10-23', '2016-11-23', '2016-12-23'))]
    

    【讨论】:

    • 谢谢@psidom。
    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2015-06-25
    • 2015-09-30
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多