Big Data Application

Spark快速入门(9) 高级话题:累加器变量

2019-04-08  本文已影响0人  MeazZa

本节我们会介绍一种在tasks之间共享可读写变量的方式,就是累加器变量。

累加器变量

累加器变量是在tasks之间可以进行读写的变量,所有tasks可共享。累加器变量有以下两个特点:

实现原理

每个Executor各自可以在累加器变量中增加delta值,Executor把delta值发送给Driver,Driver将所有的delta值加在一起。以下图为例,定义了一个累加器变量VALID,初始值为0。Executor1增加42,Driver接收到之后,VALID的值为42。Executor2增加8,VALID的值为50。Executor3增加10,VALID的值为60。在Driver中读取该变量时,得到的结果为60。

第一个Executor增加42 累加器变量为42,第二个Executor增加8 第三个Executor增加10,累加器变量最终为60

准确性保证

累加器变量对于Action类型的算子,和Transformations类型的算子,准确性的保证是不同的。

应用场景

下面我们列举一些累加器变量的应用场景:

要尽可能的控制使用累加器变量的场景,对于一些统计类数据,比如UV,是不适合使用累加器变量来计算的。

小结

本节我们介绍了累加器变量的概念,特性和应用场景。它是可读写的变量,在executors中进行修改,在driver中读取。对于一些需要进行全局简单统计的场景可以使用。

上一篇 下一篇

猜你喜欢

热点阅读