Spark数据结构优化

9 篇文章 0 订阅

       要减少内存的消耗,除了使用高效的序列化库以外,还有一个很重要的事情,就是优化数据结构。从而避免Java语法特性中所导致的额外内存的开销,比如基于Java数据结构,以及包装类型。

       1、优先使用数组以及字符串,而不是集合类。也就是说,优先用array,而不是ArrayList,LinkedList,HashMap等集合。比如,有个List<Integer> list = new ArrayList<Integer>(),将其替换为int[] arr = new int[]。这样的话,array比list少了额外信息的存储开销,还能使用原始数据类型(int)来存储数据,比integer这种包装类型存储数据,要节省内存的多。

       2、避免使用多层嵌套的对象结构。比如说,public class Teacher{private List<Student> students = new ArrayList<Student>()}。这个就是非常不好的例子,因为Teacher内部又嵌套了大量的小Student对象。对于这种情况可以选择特殊的数据结构来进行存储,比如用多层嵌套的JSON字符串就是一个很好的选择。

       3、尽量使用int替代String。因为string虽然比list,map等数据结构高效多了,占用内存少,但是他相比int类型还是有额外信息的消耗,比如char数组信息。程序中常用的id,完全可以用string来描述。在spark应用中,id就不要用常用的uuid了,因为无法转成int,就用自增的int类型的id即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值