如何在pyspark中使用GroupByKey处理多个键?

3

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

([('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个回答

2

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'))]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接