spark中任务级别的全局变量值更新

时间:2016-10-17 13:25:59

标签: apache-spark

我需要根据转换中的某些计算进行一些整数变量更新。例如,如果我在记录匹配中遇到一些差异,那么我想增加一个值并在那里使用它。

我已经探讨了累加器的使用,

  

但其值只能用于驱动程序

这对我来说非常乏味,因为我正在处理数十亿行。 请建议我在MapReduce框架中使用像COUNTERS这样的全局变量更新的可能解决方案。

1 个答案:

答案 0 :(得分:0)

累加器是spark中计数器的最佳选择。但是由于转换中的计算被懒惰地评估,因此必须在行动中使用而不是转换。您可以在下面的链接中找到示例。

https://github.com/prithvirajbose/spark-dev/blob/master/src/main/scala/examples/PurchaseLogAnalysis.scala

我遇到了同样的问题。使用累加器对于这个用例来说是一个很好的做法,它不会影响火花性能并且更安全。