我正在试验,在不影响 Spark 中作业的整体处理时间的情况下,我可以缓存的最大原始数据是多少。
Spark 集群 - 2 台机器,12 核,96GB 内存。我创建了 12 个工人,每个工人都有 1 个核心和 8GB 内存。
我缓存了约 2.4GB 的镶木地板,在 RAM 上创建了大约 5.4GB 的内存占用。在简单任务中,它需要大约 8 秒(计数 --> GroupBY --> 收集)。
我再次缓存了 6 个类似的文件,每个 parquet 约为 2.4GB,总内存占用约为 30GB。再次在加载的 5.4GB 缓存数据帧上执行相同的任务(Count--> GroupBY --> Collect),耗时约 12 秒。
数据是(日期、时间戳、字符串、双精度)字段的混合,每个文件中约 300 列。
已经试过了——
案例 1 - Total Executors - 4 , 每个 Executor Cores - 3 cores , 每个 Executor 内存 24GB
案例 2 - Total Executors - 6 , 每个 Executor Cores - 2 cores , 每个 Executor 内存 16GB
案例 3 - Total Executors - 12 , 每个 Executor Cores - 1 个 cores , 每个 Executor 内存 8GB
案例3给了我最好的结果。
这是火花的正确行为吗?
星火 v2.0.2