火花检查点比缓存更快吗?
Posted
技术标签:
【中文标题】火花检查点比缓存更快吗?【英文标题】:Is spark checkpointing faster than caching? 【发布时间】:2017-07-07 06:16:17 【问题描述】:在我的 spark 应用程序中,我正在读取 spark rdd 中的几个 hive 表,然后稍后对这些 rdds 执行一些转换。为了避免重新计算,我使用rdd.cache()
或rdd.persist()
和rdd.checkpoint()
方法缓存了这些rdds。
根据 spark 文档和在线参考资料,我认为检查点操作比缓存更昂贵。虽然缓存会保持 rdd 沿袭,并且检查点会破坏它,但检查点会从 HDFS 写入和读取。
我观察到的奇怪的事情是,我发现检查点阶段比缓存/持久化(仅内存)更快(近 2 倍)。我跑了多次,结果仍然相似。
我无法理解为什么会这样。任何帮助都会有所帮助。
【问题讨论】:
【参考方案1】:我最近运行了类似的基准测试,我也遇到了同样的情况:checkpoint()
尽管 I/O 更多,但速度更快。我的解释是,保留整个血统是一项昂贵的操作。
我在 1、10、100、1000、10000、100000、1000000、2000000、10m 等更多记录上运行基准测试,检查点总是更快。沿袭非常简单(记录过滤,然后是几个聚合)。存储在 NVMe 驱动器上是本地的(不通过网络阻塞)。我想这真的取决于很多标准。
【讨论】:
以上是关于火花检查点比缓存更快吗?的主要内容,如果未能解决你的问题,请参考以下文章
二分查找会更快吗?Python中的二分查找与线性查找性能测试
缓存型 C++ 编译器 Zapcc 开源,号称比 Clang 更快