背景:
1,Spark 64核(执行程序),2节点,32核/每个,100GB内存/节点
2,1GB浮点二进制二进制数组
[
0.2, 0.6 ...
]
3,操作:将每个Array单元格映射到元组列表,每个单元格复制5次,例如,
((id0, 0.2),(id1, 0.2), (id2, 0.2),(id3, 0.2),(id4, 0.2), (id5, 0.2), (id6, 0.6) ..... )
id: is calculated based on some standard.
从Spark UI,我发现导入数据大小为105GB(太大了?)。
在我的猜测中,15GB是一个粗略的数字。
(1GB Array Data (Float) + 2 GB id (long) ) * 5 = 15GB
* 5 because that each cell is repeated five times in my flatmap function.
Spark如何在内存中表示这些数据,为什么它如此大?