背景:
1、Spark 64核(执行器)、2个Node、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如何在内存中表示这些数据,为什么这么大?