我开始自学火花了,所以我的问题可能真的很傻。在
不管怎样,我正在处理一个由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))
实际上是打印到终端的。在
有人能帮我理解为什么吗?在
closest
和pointStats
,都是RDD,当你在RDD上打印语句时,你只能看到像PythonRDD[36] at RDD at PythonRDD.scala:48
这样的语句打印在终端上。除非您在rdd上发出action
,否则它们的内容不会被打印出来,比如-语句
^{pr2}$print("Final centers: " + str(kPoints))
起作用是因为 使用action
takeSample
-希望这有帮助。请阅读更多关于RDD的操作和转换操作之间的区别。在
相关问题 更多 >
编程相关推荐