输入文件包含20行。我正在尝试使用reduce函数计算记录总数。谁能解释一下为什么结果有差异?因为这里的y值仅是1。
默认分区数:4
scala> rdd = sc.textFile("D:\LearningPythonTomaszDenny\Codebase\\wholeTextFiles\\names1.txt")
scala> rdd.map(x=>1).reduce((acc,y) => acc+1)
res17: Int = 8
scala> rdd.map(x=>1).reduce((acc,y) => acc+y)
res18: Int = 20
答案 0 :(得分:0)
因为这里y的值仅是1。
那根本不是真的。 reduce
包含三个阶段(严格意义上不是Spark的意思):
在您的情况下,第一阶段和第二阶段的结果是相同的,但是第一种方法只会忽略部分结果。换句话说,不管分区的结果是什么,它总是只加1。
这种方法仅适用于非并行,非顺序reduce
实现。