Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 读取检查点RDD_Scala_Apache Spark - Fatal编程技术网

Scala 读取检查点RDD

Scala 读取检查点RDD,scala,apache-spark,Scala,Apache Spark,所以我试图预先计算我的数据,这样我就可以从检查点提取RDD。然而,我发现在运行同一个作业两次后,系统只是从头开始重新创建RDD 下面是我为创建检查点而实现的代码: def checkpointTeam(checkpointDir:String) ={ sparkContext.setCheckpointDir(checkpointDir) val a = ObjectsTable.readAsRDD(sparkContext, Some("5507424...")).pers

所以我试图预先计算我的数据,这样我就可以从检查点提取RDD。然而,我发现在运行同一个作业两次后,系统只是从头开始重新创建RDD

下面是我为创建检查点而实现的代码:

  def checkpointTeam(checkpointDir:String) ={
    sparkContext.setCheckpointDir(checkpointDir)
    val a = ObjectsTable.readAsRDD(sparkContext, Some("5507424...")).persist() //read from HBase
    a.checkpoint()
    a.count()
  }
编辑:以下是创建我的sparkContext的代码

val sparkContext = {
      val sparkConf = new SparkConf()
        .setAppName(appName.getOrElse(jobName))

        .set("spark.driver.allowMultipleContexts", "true")


      sparkConf.setMaster(EnvConfig.sparkMaster)

      Option(System.getenv("SPARK_HOME")).foreach(sparkConf.setSparkHome)

      sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")    
      sparkConf.set("spark.scheduler.mode", "FAIR")
      sparkConf.set("spark.yarn.am.memory", "14g")
      sparkConf.set("spark.yarn.am.cores", "4")
      sparkConf.set("spark.driver.extraJavaOptions","-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode")
      sparkConf.set("spark.executor.extraJavaOptions","-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode")
      sparkConf.set("spark.storage.memoryFraction", "0.4")
      sparkConf.set("spark.yarn.executor.memoryOverhead", "4000")

      sparkConf.set("spark.locality.wait.process","120000")

      new SparkContext(sparkConf)
    }

    sparkContext.addSparkListener(new StatsReportListener())

    log.info("Initialized SparkContext")

    sparkContext
  }

如果使用流式上下文,只需使用StreamingContext.getor创建,请参阅文档:


如果它不是流式处理—您可以控制何时在批处理作业中保存rdd以及将rdd保存到何处,这样您就可以完全从同一个位置加载它(通常在批处理中,除非您有庞大的沿袭,否则您不需要检查点,但这不是为了保存数据,而是为了截断DAG)

向我们展示运行
SparkContext
@YuvalItzchakov addedOne的代码,如果不使用流媒体,则始终可以使用本地检查点保存数据帧。持久化和检查点是两件不同的事情。在代码中,您使用了persist方法,它将数据保存在存储器中。虽然检查点将数据保存在检查点目录中。嗨,Igor,我已经能够找到保存数据的文件,但它似乎是序列化的,我不知道如何反序列化它。你知道如何重新加载信息吗?另外,我没有使用流。嗨,我不确定spark在检查点设置时使用什么格式来序列化数据。为什么不能使用像saveAsObjectFile这样的东西来编写,而使用objectFile这样的东西来加载呢?()“您将能够”---如何?;)