PySpark拆分行并转换为RDD

时间:2015-08-20 19:35:18

标签: python apache-spark pyspark

我有一个RDD,其中每个元素都具有以下格式

['979500797', ' 979500797,260973244733,2014-05-0402:05:12,645/01/105/9931,78,645/01/105/9931,a1,forward;979500797,260972593713,2014-05-0407:05:04,645/01/105/9931,22,645/01/105/863,a4,forward']

我想将它转换为另一个RDD,使得键是相同的,即979500797,但该值是分裂的结果&#39 ;;' 。换句话说,最终输出应该是

[
   ['979500797', ' 979500797,260973244733,2014-05-0402:05:12,645/01/105/9931,78,645/01/105/9931,a1,forward']
   ['979500797','979500797,260972593713,2014-05-0407:05:04,645/01/105/9931,22,645/01/105/863,a4,forward']
]

我一直在尝试使用这样的地图

df_feat3 = df_feat2.map(lambda (x, y):(x, y.split(';'))) 

但它似乎无法正常工作

1 个答案:

答案 0 :(得分:4)

这里需要的是flatMapflatMap采用返回序列并连接结果的函数。

df_feat3 = df_feat2.flatMap(lambda (x, y): ((x, v) for v in y.split(';')))

另外,我会避免使用元组参数。这是一个很酷的功能,但在Python 3中不再可用。请参阅PEP 3113