Pyspark |使用值列表从键转换RDD>;具有键列表的值

Pyspark |使用值列表从键转换RDD>;具有键列表的值,pyspark,apache-spark-sql,rdd,Pyspark,Apache Spark Sql,Rdd,在pyspark中,如何将输入RDD(其中每个键都有一个值列表)转换为输出RDD(其中每个值都有它所属的键列表) 输入 [(1, ['a','b','c','e']), (2, ['b','d']), (3, ['a','d']), (4, ['b','c'])] [('a', [1, 3]), ('b', [1, 2, 4]), ('c', [1, 4]), ('d', [2,3]), ('e', [1])] 输出 [(1, ['a','b','c','e']), (2, ['b','d'

在pyspark中,如何将输入RDD(其中每个键都有一个值列表)转换为输出RDD(其中每个值都有它所属的键列表)

输入

[(1, ['a','b','c','e']), (2, ['b','d']), (3, ['a','d']), (4, ['b','c'])]
[('a', [1, 3]), ('b', [1, 2, 4]), ('c', [1, 4]), ('d', [2,3]), ('e', [1])]
输出

[(1, ['a','b','c','e']), (2, ['b','d']), (3, ['a','d']), (4, ['b','c'])]
[('a', [1, 3]), ('b', [1, 2, 4]), ('c', [1, 4]), ('d', [2,3]), ('e', [1])]

首先展平并交换rdd上的键值,然后
groupByKey

rdd.flatMap(r[1]]中k的lambda r:[(k,r[0])).groupByKey().mapValues(list.collect())
#[('a',[1,3]),('e',[1]),('b',[1,2,4]),('c',[1,4]),('d',[2,3])]

首先展平并交换rdd上的键值,然后
groupByKey

rdd.flatMap(r[1]]中k的lambda r:[(k,r[0])).groupByKey().mapValues(list.collect())
#[('a',[1,3]),('e',[1]),('b',[1,2,4]),('c',[1,4]),('d',[2,3])]
当输入有1个键但有2个值(Int、String、list)时,如何使mapValues(list)工作?当输入有1个键但有2个值(Int、String、list)时,如何使mapValues(list)工作?