【发布时间】:2019-05-09 06:38:25
【问题描述】:
RDD ( 列表(1, 2, 3) 列表('A','B','C') 列表('a','b','c') )
我想把它改成
RDD ( 列表(1,'A','a') 列表(2,'B','b') 列表(3,'C','c') )
我想在 PySpark 中执行此操作而不使用收集操作?
我尝试了以下方法:
lst = [[1, 2, 3], ['A', 'B', 'C'], ['a', 'b', 'c']] l = sc.parallelize(lst) lst_new = l.reduce(lambda x,y: zip(x, y)) for i in lst_new: print(i)
output:
((1, 'A'), 'aa')
((2, 'B'), 'bb')
((3, 'C'), 'cc')
Required output: RDD(List(1, 'A', 'a'), List(2, 'B', 'b'), List(3, 'C', 'c'))
这样我就可以将其转换为数据框。
+--+---+---+
|A1| A2| A3|
+--+---+---+
|1 | A| aa|
|2 | B| bb|
|3 | C| cc|
+--+---+---+
【问题讨论】:
-
第二个示例的输出似乎是错误的。我通过运行第二个示例得到
(1, ('A', 'a')) (2, ('B', 'b')) (3, ('C', 'c'))。