Apache spark 火花RDD-KV对的整形
有没有办法以这种方式重塑spark RDD。基本上与此相反: 假设我有:Apache spark 火花RDD-KV对的整形,apache-spark,pyspark,rdd,Apache Spark,Pyspark,Rdd,有没有办法以这种方式重塑spark RDD。基本上与此相反: 假设我有: [['id1', 'v1', 'v2', 'v3', 'v4'], ['id2', 'v1', 'v2', 'v3']] 并且想要: [['id1','v1'], ['id1','v2'], ['id1','v3'], ['id1','v4'], ['id2','v1'], ['id2','v2'], ['id2','v3']] 注意到每行中有不同数量的变量。谢谢,我不知道如何正确引用和循环列表的子集。
[['id1', 'v1', 'v2', 'v3', 'v4'], ['id2', 'v1', 'v2', 'v3']]
并且想要:
[['id1','v1'],
['id1','v2'],
['id1','v3'],
['id1','v4'],
['id2','v1'],
['id2','v2'],
['id2','v3']]
注意到每行中有不同数量的变量。谢谢,我不知道如何正确引用和循环列表的子集。
rdd = sc.parallelize([
['id1', 'v1', 'v2', 'v3', 'v4'],
['id2', 'v1', 'v2', 'v3']
])
rdd2 = rdd.flatMap(lambda x: [[x[0], y] for y in x[1:]])
rdd2.collect()
>>>
[['id1', 'v1'],
['id1', 'v2'],
['id1', 'v3'],
['id1', 'v4'],
['id2', 'v1'],
['id2', 'v2'],
['id2', 'v3']]