Apache spark Spark能自动识别检查点目录吗?

Apache spark Spark能自动识别检查点目录吗?,apache-spark,checkpoint,Apache Spark,Checkpoint,我最近在学习Spark,对检查点感到困惑 我了解到,检查点可以将RDD存储在本地或HDFS目录中,它将截断RDD的沿袭。但是如何在另一个驱动程序中获得正确的检查点文件呢?Spark能自动获得路径吗 例如,我在第一个驱动程序中检查了一个RDD,并希望在第二个驱动程序中重用它,但第二个驱动程序不知道检查点文件的路径,是否可以重用检查点文件 我写了一个关于检查点的演示,如下所示。我检查“sum”RDD,然后收集它 val ds = spark.read.option("delimiter", ",")

我最近在学习Spark,对检查点感到困惑

我了解到,检查点可以将RDD存储在本地或HDFS目录中,它将截断RDD的沿袭。但是如何在另一个驱动程序中获得正确的检查点文件呢?Spark能自动获得路径吗

例如,我在第一个驱动程序中检查了一个RDD,并希望在第二个驱动程序中重用它,但第二个驱动程序不知道检查点文件的路径,是否可以重用检查点文件

我写了一个关于检查点的演示,如下所示。我检查“sum”RDD,然后收集它

val ds = spark.read.option("delimiter", ",").csv("/Users/lulijun/git/spark_study/src/main/resources/sparktest.csv")
  .toDF("dt", "org", "pay", "per", "ord", "origin")


val filtered = ds.filter($"dt" > "20171026")

val groupby = filtered.groupBy("dt")

val sum = groupby.agg(("ord", "sum"), ("pay", "max"))

sum.count()

sum.checkpoint()

sum.collect()
但我在“收集”操作触发的Spark作业中发现,RDD Never读取检查点。是不是因为内存中已经存在“sum”RDD?我对“computeOrReadCheckpoint”方法感到困惑,它什么时候读取checkpoint

 /**
   * Compute an RDD partition or read it from a checkpoint if the RDD is checkpointing.
   */
  private[spark] def computeOrReadCheckpoint(split: Partition, context: TaskContext): Iterator[T] =
  {
    if (isCheckpointedAndMaterialized) {
      firstParent[T].iterator(split, context)
    } else {
      compute(split, context)
    }
  }
顺便问一下,在Spark流媒体中RDD检查点和chekpoint的主要区别是什么

任何帮助都将不胜感激


谢谢

批处理模式中的检查点仅用于切割沿袭。它不是为在不同的应用程序之间共享数据而设计的。当单个RDD处于多个操作中时,使用检查点数据。换句话说,它不适用于您的场景。要在应用程序之间共享数据,应将其写入可靠的分布式存储


流中的检查点用于在应用程序失败时提供容错。一旦应用程序重新启动,它就可以重用检查点来恢复数据和/或元数据。与批处理类似,它不是为数据共享而设计的。

批处理模式中的检查点仅用于切割沿袭。它不是为在不同的应用程序之间共享数据而设计的。当单个RDD处于多个操作中时,使用检查点数据。换句话说,它不适用于您的场景。要在应用程序之间共享数据,应将其写入可靠的分布式存储


流中的检查点用于在应用程序失败时提供容错。一旦应用程序重新启动,它就可以重用检查点来恢复数据和/或元数据。与批处理类似,它不是为数据共享而设计的。

因此,如果我使用服务器复制将检查点写入HDFS,并希望在应用程序之间共享数据,那么如何获取检查点目录?因此,如果我使用服务器复制将检查点写入HDFS,并希望在应用程序之间共享数据,如何获取检查点的目录?