PySpark:打印到while循环内的终端

2024-10-01 09:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始自学火花了,所以我的问题可能真的很傻。在

不管怎样,我正在处理一个由Spark安装提供的示例(link:https://github.com/apache/spark/blob/master/examples/src/main/python/kmeans.py

我想修改一下代码,因为我需要更好地理解map reduce操作。在

我想做的是:

while tempDist > convergeDist:
    print('Here \n')
    closest = data.map(
        lambda p: (closestPoint(p, kPoints), (p, 1)))
    print(closest)
    pointStats = closest.reduceByKey(
        lambda p1_c1, p2_c2: (p1_c1[0] + p2_c2[0], p1_c1[1] + p2_c2[1]))
    print(pointStats)
    newPoints = pointStats.map(
        lambda st: (st[0], st[1][0] / st[1][1])).collect()

但是,在使用命令执行脚本时,实际上不会打印上述打印内容

^{pr2}$

后来呢

 print("Final centers: " + str(kPoints))

实际上是打印到终端的。在

有人能帮我理解为什么吗?在


Tags: lambda示例mapspark火花stprintp2
1条回答
网友
1楼 · 发布于 2024-10-01 09:24:48

closestpointStats,都是RDD,当你在RDD上打印语句时,你只能看到像PythonRDD[36] at RDD at PythonRDD.scala:48这样的语句打印在终端上。除非您在rdd上发出action,否则它们的内容不会被打印出来,比如-

print(closest.collect())

语句print("Final centers: " + str(kPoints))起作用是因为 使用actiontakeSample-

^{pr2}$

希望这有帮助。请阅读更多关于RDD的操作和转换操作之间的区别。在

相关问题 更多 >