如何在 pyspark 中的多个键上使用 GroupByKey?

Posted

技术标签:

【中文标题】如何在 pyspark 中的多个键上使用 GroupByKey?【英文标题】:How to use GroupByKey on multiple keys in pyspark? 【发布时间】: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 但对我不起作用。

谢谢。

【问题讨论】:

【参考方案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。

以上是关于如何在 pyspark 中的多个键上使用 GroupByKey?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用给定的reduce函数基于pyspark中的字段合并多个JSON数据行

如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列

如何在 Javascript 中的 Map 键上使用 .map()

如何在字典中使用 pyspark.sql.functions.when() 的多个条件?

如何在 Sprite 套件中的返回键上隐藏键盘?

在 PySpark 中的多个列上应用 MinMaxScaler