【发布时间】:2016-07-12 08:47:03
【问题描述】:
我正在接受这个course。
它表示 RDD 上的 reduce 操作是一次在一台机器上完成的。这意味着如果您的数据分布在两台计算机上,那么下面的函数将处理第一台计算机中的数据,将找到该数据的结果,然后它将从第二台计算机获取单个值,运行该函数,它将继续这样,直到它完成机器 2 中的所有值。这是正确的吗?
我以为该函数会同时在两台机器上开始运行,然后一旦有两台机器的结果,它将再次运行该函数最后一次
rdd1=rdd.reduce(lambda x,y: x+y)
更新 1--------------------------------------------
与减少功能相比,以下步骤会给出更快的答案吗?
Rdd=[3,5,4,7,4]
seqOp = (lambda x, y: x+y)
combOp = (lambda x, y: x+y)
collData.aggregate(0, seqOp, combOp)
更新 2-----------------------------------
下面的两组代码是否应该在相同的时间内执行?我检查了一下,似乎两者都需要相同的时间。
import datetime
data=range(1,1000000000)
distData = sc.parallelize(data,4)
print(datetime.datetime.now())
a=distData.reduce(lambda x,y:x+y)
print(a)
print(datetime.datetime.now())
seqOp = (lambda x, y: x+y)
combOp = (lambda x, y: x+y)
print(datetime.datetime.now())
b=distData.aggregate(0, seqOp, combOp)
print(b)
print(datetime.datetime.now())
【问题讨论】:
标签: apache-spark reduce