在我的 spark 应用程序中,我正在读取 spark rdd 中的几个 hive 表,然后稍后对这些 rdds 执行一些转换。rdd.cache()
为了避免重新计算,我使用orrdd.persist()
和方法缓存了这些 rdds rdd.checkpoint()
。
根据 spark 文档和在线参考资料,我认为检查点操作比缓存更昂贵。尽管缓存保持 rdd 沿袭,并且检查点会破坏它,但检查点会从 HDFS 写入和读取。
在我的案例中观察到的奇怪的事情是,我看到检查点阶段比缓存/持久化(仅内存)更快(近 2 倍)。我跑了多次,结果仍然相似。
我无法理解为什么会这样。任何帮助都会有所帮助。