【发布时间】:2018-06-15 02:47:24
【问题描述】:
我有pyspark.rdd.PipelinedRDD(Rdd1)。
当我在做Rdd1.collect() 时,它给出的结果如下所示。
[(10, {3: 3.616726727464709, 4: 2.9996439803387602, 5: 1.6767412921625855}),
(1, {3: 2.016527311459324, 4: -1.5271512313750577, 5: 1.9665475696370045}),
(2, {3: 6.230272144805092, 4: 4.033642544526678, 5: 3.1517805604906313}),
(3, {3: -0.3924680103722977, 4: 2.9757316477407443, 5: -1.5689126834176417})]
现在我想在不使用 collect() 方法的情况下将 pyspark.rdd.PipelinedRDD 转换为 Data frame
我的最终数据框应该如下所示。 df.show() 应该是这样的:
+----------+-------+-------------------+
|CId |IID |Score |
+----------+-------+-------------------+
|10 |4 |2.9996439803387602 |
|10 |5 |1.6767412921625855 |
|10 |3 |3.616726727464709 |
|1 |4 |-1.5271512313750577|
|1 |5 |1.9665475696370045 |
|1 |3 |2.016527311459324 |
|2 |4 |4.033642544526678 |
|2 |5 |3.1517805604906313 |
|2 |3 |6.230272144805092 |
|3 |4 |2.9757316477407443 |
|3 |5 |-1.5689126834176417|
|3 |3 |-0.3924680103722977|
+----------+-------+-------------------+
接下来应用收集、迭代和最后的数据帧,我可以实现这种转换为 rdd。
但现在我想在不使用任何collect() 方法的情况下将pyspark.rdd.PipelinedRDD 转换为Dataframe。
请告诉我如何实现这一目标?
【问题讨论】:
标签: python-3.x apache-spark pyspark apache-spark-sql rdd