本文主要是介绍Spark性能调优---fastutil优化数据格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Spark中应用fastutil的场景:
1、如果算子函数使用了外部变量;那么第一,你可以使用Broadcast广播变量优化;第二,可以使用Kryo序列化类库,提升序列化性能和效率;第三,如果外部变量是某种比较大的集合,那么可以考虑使用fastutil改写外部变量,首先从源头上就减少内存的占用,通过广播变量进一步减少内存占用,再通过Kryo序列化类库进一步减少内存占用。
2、在你的算子函数里,也就是task要执行的计算逻辑里面,如果有逻辑中,出现,要创建比较大的Map、List等集合,可能会占用较大的内存空间,而且可能涉及到消耗性能的遍历、存取等集合操作;那么此时,可以考虑将这些集合类型使用fastutil类库重写,使用了fastutil集合类以后,就可以在一定程度上,减少task创建出来的集合类型的内存占用。避免executor内存频繁占满,频繁唤起GC,导致性能下降。
fastutil的使用
第一步:在pom.xml中引用fastutil的包
<dependency><groupId>fastutil</groupId><artifactId>fastutil</artifactId><version>5.0.9</version>
</dependency>
List<Integer> => IntList 基本都是类似于IntList的格式,前缀就是集合的元素类型;特殊的就是Map,Int2IntMap,代表了key-value映射的元素类型。除此之外,刚才也看到了,还支持object、reference。
fastutil官网:http://fastutil.di.unimi.it/docs/overview-summary.html
这篇关于Spark性能调优---fastutil优化数据格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!