Spark 2.x管理与开发-Spark Streaming-性能优化(四)优化数据结构

1.概述

要减少内存的消耗,除了使用高性能的序列化类库外,还有一个很重要的事情,就是优化数据结构。

避免语法特性中所导致的额外的内存开销。

核心:优化算子函数内部使用到的局部数据或算子函数外部的数据。

目的:减少内存的消耗和占用。

2.如何做?

1)优先使用数组或字符串而不是集合类,即:优先使用Array,而不是ArrayListLinkedList,HashMap。因为数组和字符串比集合类更省内存。

例如:使用Int[]要比List<Integer>节省内存

2)将对象转换成字符串

HashMap

Map<Integer,Person> persons=new HashMap ...

可以转成json存储

或者自定义: Key1:name,address1 ...... | key2:name2,address2 ......

3)程序里要避免使用多层嵌套对象结构

EG:

public class Teacher{

    Private List<Student> students;

}

一个Teacher对象里可能会有多个Student对象

优化方法:转换成字符串处理

{

    “tid”:”1”,

    “students”:[

        {},{},{}

    ]

}

4)对于某些能够避免的场景,尽量使用int代替string(不强制要求)

原因:Int类型占用更小的内存

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3