以下代码来自Apache Spark的快速入门指南.有人可以解释一下"线"变量是什么以及它来自何处?
textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
Run Code Online (Sandbox Code Playgroud)
另外,如何将值传递给a,b?
我正在学习这门课程。
它说 RDD 上的归约操作一次在一台机器上完成。这意味着,如果您的数据分布在两台计算机上,那么以下函数将处理第一台计算机中的数据,找到该数据的结果,然后将从第二台计算机中获取单个值,运行该函数,然后它将继续如此直到完成机器 2 中的所有值。这是正确的吗?
我认为该函数将同时在两台机器上开始运行,然后一旦获得两台机器的结果,它将再次最后一次运行该函数
rdd1=rdd.reduce(lambda x,y: x+y)
Run Code Online (Sandbox Code Playgroud)
与reduce函数相比,下面的步骤会给出更快的答案吗?
Rdd=[3,5,4,7,4]
seqOp = (lambda x, y: x+y)
combOp = (lambda x, y: x+y)
collData.aggregate(0, seqOp, combOp)
Run Code Online (Sandbox Code Playgroud)
下面的两组代码是否应该在相同的时间内执行?我检查了一下,似乎两者花费的时间相同。
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())
Run Code Online (Sandbox Code Playgroud)