gpt4 book ai didi

python-3.x - 如何在不使用Pyspark中的collect()方法的情况下将pyspark.rdd.PipelinedRDD转换为数据框?

转载 作者:行者123 更新时间:2023-12-04 14:23:08 24 4
gpt4 key购买 nike

我有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转换为数据框

我的最终数据框架应如下所示。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|
+----------+-------+-------------------+

我接下来可以通过collect(),iteration和最后的Data frame来实现到rdd的转换。

但是现在我想在不使用任何collect()方法的情况下将pyspark.rdd.PipelinedRDD(RDD1)转换为数据帧。

请让我知道如何实现这一目标?

最佳答案

您想在这里做两件事:
1.整理数据
2.将其放入数据框

一种方法如下:

首先,让我们拉平字典:

rdd2 = Rdd1.flatMapValues(lambda x : [ (k, x[k]) for k in x.keys()])

收集数据时,您会得到以下信息:
[(10, (3, 3.616726727464709)), (10, (4, 2.9996439803387602)), ...

然后,我们可以格式化数据并将其转换为数据框:
rdd2.map(lambda x : (x[0], x[1][0], x[1][1]))\
.toDF(("CId", "IID", "Score"))\
.show()

这给你这个:
+---+---+-------------------+
|CId|IID| Score|
+---+---+-------------------+
| 10| 3| 3.616726727464709|
| 10| 4| 2.9996439803387602|
| 10| 5| 1.6767412921625855|
| 1| 3| 2.016527311459324|
| 1| 4|-1.5271512313750577|
| 1| 5| 1.9665475696370045|
| 2| 3| 6.230272144805092|
| 2| 4| 4.033642544526678|
| 2| 5| 3.1517805604906313|
| 3| 3|-0.3924680103722977|
| 3| 4| 2.9757316477407443|
| 3| 5|-1.5689126834176417|
+---+---+-------------------+

关于python-3.x - 如何在不使用Pyspark中的collect()方法的情况下将pyspark.rdd.PipelinedRDD转换为数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com