apache-spark - 内存中缓存的数据帧大小如何影响 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
解决方案
推荐阅读
- directx - Direct3D9不绘图?
- node.js - Deno.js 的 Attain 是否类似于 Node.js 的 Express?
- python - 如何将矩阵(列表列表)中的所有值增加n?
- javascript - 如何从 x,y 坐标到唯一的 RGB 值?
- python - 变量未定义,但我已经定义了变量
- codeigniter - CI->session->userdata['email'] 未定义索引
- python - 如何使用 Python 使用 Selenium 更改隐藏的输入值
- swiftui - SwiftUI 中的 foreach 未反映更改
- flutter - Flutter share - 有没有办法知道共享功能完成?
- javascript - 如何在多选类型的用户选择选项上动态添加输入字段