首页 > 解决方案 > 内存中缓存的数据帧大小如何影响 Apache Spark 中的处理时间?

问题描述

我正在试验,在不影响 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

标签: apache-spark

解决方案


推荐阅读