相关疑难解决方法(0)

`map`和`reduce`方法如何在Spark RDD中工作?

以下代码来自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?

链接到QSG http://spark.apache.org/docs/latest/quick-start.html

closures scala apache-spark

18
推荐指数
2
解决办法
4万
查看次数

SparkReduce函数:了解它是如何工作的

我正在学习这门课程

它说 RDD 上的归约操作一次在一台机器上完成。这意味着,如果您的数据分布在两台计算机上,那么以下函数将处理第一台计算机中的数据,找到该数据的结果,然后将从第二台计算机中获取单个值,运行该函数,然后它将继续如此直到完成机器 2 中的所有值。这是正确的吗?

我认为该函数将同时在两台机器上开始运行,然后一旦获得两台机器的结果,它将再次最后一次运行该函数

rdd1=rdd.reduce(lambda x,y: x+y)
Run Code Online (Sandbox Code Playgroud)

更新1--------------------------------------------------------

与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)

更新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())
Run Code Online (Sandbox Code Playgroud)

reduce apache-spark

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

apache-spark ×2

closures ×1

reduce ×1

scala ×1