前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark性能调优篇五之使用fastUtil工具包

Spark性能调优篇五之使用fastUtil工具包

作者头像
z小赵
发布2018-09-05 15:44:15
9040
发布2018-09-05 15:44:15
举报
文章被收录于专栏:简单聊聊Spark简单聊聊Spark

今天再来介绍一个小的优化点,是一个通过使用fastutil工具包对数据格式进行优化。首先来明确一个东西,什么是fastutil?

        fastutil是一个Java集合框架的扩展,通过实现Java集合的接口,提供了特殊类型的map,list等等。通过使用fastutil可以使得对象占用更小的内存,更快的存取速度;通过这两个特点,我们可以将Spark作业中用的一些map,list等结构替换成fastutil来提高Spark作业的运行效率。fastutil的每一种集合类型,都实现了对应的Java中的标准接口(比如fastutil的map,实现了Java的Map接口),因此可以直接放入已有系统的任何代码中。

明确了fastutil以后,我们来看看其在Spark代码中的应用场景。

1.如果算子函数使用了外部变量;那么第一,你可以使用Broadcast广播变量优化;第二,可以使用Kryo序列化类库,提升序列化性能和效率;第三,如果外部变量是某种比较大的集合,那么可以考虑使用fastutil改写外部变量,首先从源头上就减少内存的占用,通过广播变量进一步减少内存占用,再通过Kryo序列化类库进一步减少内存占用

2.在一些RDD中,出现了要创建一些比较大的map,list等集合,有可能会占用比较大的内存空间;另一方面加上有可能涉及比较耗性能的遍历等操作,这个时候就可以考虑使用fastutil集合类来提高性能。

        光说理论没什么卵用,我们来看看项目中到底是怎么使用的(这里结合我的项目,贴出部分代码),代码很简单,如下截图所示。

未使用fastUtil之前

使用fastUtil之后

总结:在项目某些使用了map等集合的地方,如果这个集合较大,就可以考虑采用fastutil代替传统的map等结构,从而提高程序的运行效率。本文到这里基本接近尾声,后续还会不断更新关于Spark作业优化的一些其他方式,欢迎关注。

如需转载,请注明:

z小赵 Spark性能调优篇五之使用fastUtil工具包

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档