Apache spark 清除Spark节点上保留的RDD数据

Apache spark 清除Spark节点上保留的RDD数据,apache-spark,spark-dataframe,rdd,Apache Spark,Spark Dataframe,Rdd,在任务失败的情况下,spark是否会清除持久化RDD(StorageLevel.MEMORY\u ONLY\u SER),并在尝试从头开始任务时重新计算它们。或者将附加缓存的RDD 在持久化RDD的任何任务失败的情况下,我会看到重复的记录。任何帮助都将不胜感激。任务是为计算RDD分区而启动的最小单个执行单元。 如果任务失败,run方法通知TaskContextImpl任务已失败。run请求MemoryStore释放此任务的展开内存(对于堆上和堆外内存模式),ContextCleaner是一个Sp

在任务失败的情况下,spark是否会清除持久化RDD(StorageLevel.MEMORY\u ONLY\u SER),并在尝试从头开始任务时重新计算它们。或者将附加缓存的RDD


在持久化RDD的任何任务失败的情况下,我会看到重复的记录。任何帮助都将不胜感激。

任务是为计算RDD分区而启动的最小单个执行单元。 如果任务失败,run方法通知TaskContextImpl任务已失败。run请求MemoryStore释放此任务的展开内存(对于堆上和堆外内存模式),ContextCleaner是一个Spark服务,负责在应用程序范围内清理无序排列、RDD、广播、累加器和检查点RDD

正如我们所知,RDD具有弹性,即在RDD沿袭图的帮助下具有容错性,因此能够重新计算由于节点故障而丢失或损坏的分区

缓存在内存中计算并具体化RDD,同时跟踪其沿袭(依赖项)。由于缓存会记住RDD的沿袭,Spark可以在发生节点故障时重新计算丢失分区。最后,缓存的RDD存在于正在运行的应用程序的上下文中,一旦应用程序终止,缓存的RDD也将被删除。 Spark的缓存是容错的——如果RDD的任何分区丢失,它将使用最初创建它的转换自动重新计算

如果RDD持久化在内存中,那么on task fail executor JVM进程也会失败,所以内存会被释放。
如果RDD保存在磁盘上,那么on task fail Spark shutdown hook只会擦除临时文件

task是为计算RDD分区而启动的最小单个执行单元。 如果任务失败,run方法通知TaskContextImpl任务已失败。run请求MemoryStore释放此任务的展开内存(对于堆上和堆外内存模式),ContextCleaner是一个Spark服务,负责在应用程序范围内清理无序排列、RDD、广播、累加器和检查点RDD

正如我们所知,RDD具有弹性,即在RDD沿袭图的帮助下具有容错性,因此能够重新计算由于节点故障而丢失或损坏的分区

缓存在内存中计算并具体化RDD,同时跟踪其沿袭(依赖项)。由于缓存会记住RDD的沿袭,Spark可以在发生节点故障时重新计算丢失分区。最后,缓存的RDD存在于正在运行的应用程序的上下文中,一旦应用程序终止,缓存的RDD也将被删除。 Spark的缓存是容错的——如果RDD的任何分区丢失,它将使用最初创建它的转换自动重新计算

如果RDD持久化在内存中,那么on task fail executor JVM进程也会失败,所以内存会被释放。 如果RDD保存在磁盘上,那么任务失败时Spark shutdown hook只会擦除临时文件,您可以调用

rdd.unpersist()
要清除缓存的rdd,可以调用

rdd.unpersist()

要清除缓存的rdd。

理想情况下,如果缓存的rdd由于任务失败而不在内存中,Spark将重新计算rdd。您可以通过检查DAG或在之前的阶段中放置累加器来检查是否发生这种情况,如果RDD是通过重新处理DAG计算的,则计数器将为2x,否则将为x。您能否详细说明“如果持久RDD的任何任务失败,我会看到重复记录”的问题?理想情况下,如果缓存的RDD由于任务失败而不在内存中,Spark将重新计算RDD。您可以通过检查DAG或在之前的阶段中放置累加器来检查是否发生这种情况,如果RDD是通过重新处理DAG计算的,则计数器将为2x,否则将为x。您能否详细说明“如果持久RDD的任何任务失败,我会看到重复记录”的问题??