您的位置 首页 > 德语词汇

accumulator是什么意思?Spark之Accumulator陷阱

大家好,今天小编来为大家解答accumulator是什么意思这个问题,Spark之Accumulator陷阱很多人还不知道,现在让我们一起来看看吧!

1、Accumulator是Spark提供的累加器,顾名思义,该变量只能够增加。只有driver能获取到Accumulator的值(使用value方法),Task只能对其做增加操作(使用+=)。

2、你也可以在为Accumulator命名,这样就会在Sparkwebui中显示,可以帮助你了解程序运行的情况。

accumulator是什么意思?Spark之Accumulator陷阱

3、Foraccumulatorupdatesperformedinsideactionsonly,Sparkguaranteesthateachtask’supdatetotheaccumulatorwillonlybeappliedonce,i.e.restartedtaskswillnotupdatethevalue.Intransformations,usersshouldbeawareofthateachtask’supdatemaybeappliedmorethanonceiftasksorjobstagesarere-executed.

4、我们都知道,spark中的一系列transform操作会构成一串长的任务链,此时需要通过一个action操作来触发,accumulator也是一样。因此在一个action操作之前,你调用value方法查看其数值,肯定是没有任何变化的。

5、所以在第一次count(action操作)之后,我们发现累加器的数值变成了5,是我们要的答案。

6、之后又对新产生的的newData进行了一次foreach(action操作),其实这个时候又执行了一次map(transform)操作,所以累加器又增加了5。最终获得的结果变成了10。

7、看了上面的分析,大家都有这种印象了,那就是使用累加器的过程中只能使用一次action的操作才能保证结果的准确性。

8、事实上,还是有解决方案的,只要将任务之间的依赖关系切断就可以了。什么方法有这种功能呢?你们肯定都想到了,cache,persist。调用这个方法的时候会将之前的依赖切除,后续的累加器就不会再被之前的transfrom操作影响到了。

9、使用Accumulator时,为了保证准确性,只使用一次action操作。如果需要使用多次则使用cache或persist操作切断依赖。

OK,关于accumulator是什么意思和Spark之Accumulator陷阱的内容到此结束了,希望对大家有所帮助。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023