fastutil介绍:

fastutil是扩展了Java标准集合框架(Map、List、Set;HashMap、ArrayList、HashSet)的类库,提供了特殊类型的map、set、list和queue;
fastutil能够提供更小的内存占用,更快的存取速度;我们使用fastutil提供的集合类,来替代自己平时使用的JDK的原生的Map、List、Set,好处在于,fastutil集合类,可以减小内存的占用,并且在进行集合的遍历、根据索引(或者key)获取元素的值和设置元素的值的时候,提供更快的存取速度;
fastutil也提供了64位的array、set和list,以及高性能快速的,以及实用的IO类,来处理二进制和文本类型的文件;
fastutil最新版本要求Java 7以及以上版本;

fastutil的每一种集合类型,都实现了对应的Java中的标准接口(比如fastutil的map,实现了Java的Map接口),因此可以直接放入已有系统的任何代码中。
fastutil还提供了一些JDK标准类库中没有的额外功能(比如双向迭代器)。

fastutil除了对象和原始类型为元素的集合,fastutil也提供引用类型的支持,但是对引用类型是使用等于号(=)进行比较的,而不是equals()方法。

fastutil尽量提供了在任何场景下都是速度最快的集合类库。

Spark中应用fastutil的场景:

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

2、在你的算子函数里,也就是task要执行的计算逻辑里面,如果有逻辑中,出现,要创建比较大的Map、List等集合,可能会占用较大的内存空间,而且可能涉及到消耗性能的遍历、存取等集合操作;那么此时,可以考虑将这些集合类型使用fastutil类库重写,使用了fastutil集合类以后,就可以在一定程度上,减少task创建出来的集合类型的内存占用。避免executor内存频繁占满,频繁唤起GC,导致性能下降。

关于fastutil调优的说明:

fastutil其实没有你想象中的那么强大,也不会跟官网上说的效果那么一鸣惊人。广播变量、Kryo序列化类库、fastutil,都是之前所说的,对于性能来说,类似于一种调味品,烤鸡,本来就很好吃了,然后加了一点特质的孜然麻辣粉调料,就更加好吃了一点。分配资源、并行度、RDD架构与持久化,这三个就是烤鸡;broadcast、kryo、fastutil,类似于调料。

比如说,你的spark作业,经过之前一些调优以后,大概30分钟运行完,现在加上broadcast、kryo、fastutil,也许就是优化到29分钟运行完、或者更好一点,也许就是28分钟、25分钟。

shuffle调优,15分钟;groupByKey用reduceByKey改写(本地merge),执行本地聚合,也许10分钟;跟公司申请更多的资源,比如资源更大的YARN队列,1分钟。

fastutil的使用:

第一步:在pom.xml中引用fastutil的包

<dependency><groupId>fastutil</groupId><artifactId>fastutil</artifactId><version>5.0.9</version>
</dependency>

速度比较慢,可能是从国外的网去拉取jar包,可能要等待5分钟,甚至几十分钟,不等

List<Integer> => IntList

基本都是类似于IntList的格式,前缀就是集合的元素类型;特殊的就是Map,Int2IntMap,代表了key-value映射的元素类型。除此之外,刚才也看到了,还支持object、reference。

欢迎关注,更多惊喜等着你

spark 大型项目实战(三十一): --性能调优之在实际项目中使用fastutil优化数据格式相关推荐

  1. PHP 性能分析第三篇: 性能调优实战

    注意:本文是我们的 PHP 性能分析系列的第三篇,点此阅读 PHP 性能分析第一篇: XHProf & XHGui 介绍 ,或  PHP 性能分析第二篇: 深入研究 XHGui. 在本系列的 ...

  2. php xingnengfenxi_PHP 性能分析第三篇: 性能调优实战

    在本系列的 第一篇 中,我们介绍了 XHProf .而在 第二篇 中,我们深入研究了 XHGui UI, 现在最后一篇,让我们把 XHProf /XHGui 的知识用到工作中! 性能调优 不用运行的代 ...

  3. 最新JAVA性能调优实战教程_java性能调优实战 - osc_9z8xc00s的个人空间 - OSCHINA - 中文开源技术交流社区...

    在项目压测过程中,发现系统占用,上下文切换非常频繁,在此记录下调优过程,希望对后来人有所帮助. 测试方法:模拟客户端实际操作,向服务器高并发发送数据,查看服务器的负载情况. 服务器基本配置如下 1,基 ...

  4. 松勤性能测试项目实战(监控+分析+调优)集训营学习笔记

    select * from mysql.slow_log; //查询mysql慢查询语句 具体查看哪个语句慢,可以找到一个字段类型为BLOB字段的,可以点击后查看到语句.然后把这条语句复制出来单独执行 ...

  5. 从蚂蚁金服裸辞,京东三面遭调优猛击,闭关俩月啃完653页性能调优实战手册,拿到京东offer

    性能优化是很多 Java 程序员希望彻底掌握的一门技能.很多人都想学好性能优化,希望能够在自己的工作中灵活运用提高性能,从而为用户提供良好的用户体验.然而,很多人在设计技术方案或者编码时缺乏系统地.方 ...

  6. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  7. 上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

    随着互联网的发展,高可靠.高并发以及降本增效,已成为各大公司面临的现实挑战,性能优化需求愈发迫切,大到分布式系统,小到代码块的算法优化,都已经成为你日常工作中必须要面对的事情.对于开发者而言,性能优化 ...

  8. Day820.抢购活动性能瓶颈调优 -Java 性能调优实战

    抢购活动性能瓶颈调优 Hi,我是阿昌,今天学习记录的是关于抢购活动性能瓶颈调优. 每年的双十一都是很多研发部门最头痛的节日,由于这个节日比较特殊,公司一般都会准备大量的抢购活动,相应的瞬时高并发请求对 ...

  9. 第5课:实战演示jvm三大性能调优参数:-xms -xmx -xss

    内容: 1.实战演示-Xss性能调优参数 2.实战演示-Xms.-Xmx性能调优参数 一.实战演示-Xss性能调优参数 Java每个线程的Stack大小.JDK5.0以后每个线程堆栈大小为1M,以前每 ...

最新文章

  1. python第一堂课
  2. SQL重复记录查询(转载)
  3. uva 11997(优先队列)
  4. L1-034 点赞 (20 分)—团体程序设计天梯赛
  5. 使用LoadBalancerClient就行服务消费
  6. 编程语言新宠儿——Julia诞生记(转)
  7. 反编译DLL并修改后再生成DLL
  8. 设计模式介绍及Java描述
  9. 玻璃盖板丝印质量及尺寸在线检测方案
  10. 状告技术总监,索赔 90 万元,称其拖延研发进度、系统频繁崩溃出错、产品质量存在严重问题...
  11. 因果推断与因果性学习研究进展
  12. xutils获取数据
  13. IRT模型估计-EM算法
  14. 雷人的请假对白--员工向领导到请假
  15. ECharts地图,自定义map地图显示不同图标点,点击标点显示不同弹框
  16. 计算机操作系统第四版复习+部分课后题+习题
  17. matlab系统响应与系统稳定性,系统响应及系统稳定性
  18. 谷歌地图数据采集软件
  19. Redis(十九),老男孩linux视频
  20. 【王道计算机网络笔记】数据链路层-介质访问控制

热门文章

  1. python混合编程 优点_很好的c++和Python混合编程文章
  2. Python复习第八课(2_34_0514_Python)
  3. SAP B1销售预测报错:物料的xx个预测是同一日期
  4. 中小型企业网络架构实验
  5. 计算机集成技术||PT 软件介绍
  6. 青龙面板--整理能用脚本
  7. java抛硬币_Java程序抛硬币
  8. 软件中常用的反义词组
  9. 洗地机哪个品牌最好用?家用洗地机十大名牌
  10. 记一起和前端没什么卵关系的OPTION 405问题