如何在 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()