如下代码,使用累加器对数据进行求和的过程中,发现代码没有报错,运行也无异常,但是累加器结果总是为空,经过多番查证,发现问题出现在下面代码的第六步。
开始时使用的是map算子对RDD中数据遍历,通过累加器进行计算,结果没有值。
后来发现map底层使用的是迭代器,循环遍历一遍之后,迭代器的指针已经跳到了最末尾,当进行累加器计算的时候,已经没有数据进行计算了,因此迭代器结果没有值。
修正后结果:使用foreach替代map进行循环计算。
spark使用map算子不产生数据的问题
1 | package com.spark.exercise |