Spark检查点行为

ogsagwnx  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(587)

spark在开始新工作时是否使用检查点?假设我们使用了一个检查点将一些rdd写入磁盘。在新作业期间,是否会重新计算或从磁盘加载所述rdd?

eanckbw9

eanckbw91#

除了@maxime g给出的要点之外。。。
spark不提供默认检查点。。我们需要明确地设置它。
检查点实际上是spark core(spark sql用于分布式计算)的一个特性,它允许驱动程序在出现故障时重新启动,而分布式计算的先前计算状态被描述为rdd
spark提供两种检查点。
可靠的检查点:可靠的检查点使用可靠的数据存储,如hadoop hdfs或s3。你只需做

sparkContext.setCheckpointDir("(hdfs:// or s3://)tmp/checkpoint/")
then dataframe.checkpoint(eager = true)

非责任检查点:本地检查点使用执行器存储(即节点本地磁盘存储)将检查点文件写入执行器,因为执行器生命周期被认为是不可靠的,如果作业突然终止,它不保证数据可用。

sparkContext.setCheckpointDir("/tmp/checkpoint/").
 dataframe.localCheckpoint(eager = true)

(在本地模式下进行检查点并且启用了群集自动缩放时,请小心。)
注意:根据checkpoint操作符的eager标志,检查点可以是eager或lazy。紧急检查点是默认的检查点,在请求时立即发生。惰性检查点不会也只会在执行操作时发生。急切的检查点将创建一个立即的阶段屏障,然后等待任何特定的操作发生,并记住所有以前的转换。

ldfqzlk8

ldfqzlk82#

在作业开始时,如果检查点位置中存在rdd,则会加载它。
这也意味着,如果您更改了代码,也应该小心检查点,因为带有旧代码的rdd加载了新代码,这可能会导致冲突。

相关问题