Spark 2.x管理与开发-Spark Streaming-性能优化(四)优化数据结构
1.概述
要减少内存的消耗,除了使用高性能的序列化类库外,还有一个很重要的事情,就是优化数据结构。
避免语法特性中所导致的额外的内存开销。
核心:优化算子函数内部使用到的局部数据或算子函数外部的数据。
目的:减少内存的消耗和占用。
2.如何做?
1)优先使用数组或字符串而不是集合类,即:优先使用Array,而不是ArrayList,LinkedList,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类型占用更小的内存
浙公网安备 33010602011771号