Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/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
Apache spark 如何记住Spark流媒体应用程序与#x27;s重新开始?_Apache Spark_Spark Streaming - Fatal编程技术网

Apache spark 如何记住Spark流媒体应用程序与#x27;s重新开始?

Apache spark 如何记住Spark流媒体应用程序与#x27;s重新开始?,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我正在学习火花流。我想保持状态更新,并且能够使用mapWithState更新状态。我还在上下文中启用了检查点。如果必须停止/重新启动作业,我希望记住状态。现在,每次重启都会重新开始计数。我尝试了各种现金、检查点的选择,浏览了很多帖子,但没有得到清晰的图片 环境: 我在本地运行Spark进行开发,也作为HDP沙箱运行。(我在两种环境下都试过) 是否可以记住终止Spark作业并重新启动它的状态。(无任何编程更改) 如果可能怎么办?任何提示或建议都会有所帮助。(我尝试过chekpoints,在单个RD

我正在学习火花流。我想保持状态更新,并且能够使用mapWithState更新状态。我还在上下文中启用了检查点。如果必须停止/重新启动作业,我希望记住状态。现在,每次重启都会重新开始计数。我尝试了各种现金、检查点的选择,浏览了很多帖子,但没有得到清晰的图片

环境: 我在本地运行Spark进行开发,也作为HDP沙箱运行。(我在两种环境下都试过)

  • 是否可以记住终止Spark作业并重新启动它的状态。(无任何编程更改)

  • 如果可能怎么办?任何提示或建议都会有所帮助。(我尝试过chekpoints,在单个RDD上缓存,在本地和HDP sanbox上使用MapwithStateRDD)

  • 我没有尝试的唯一选项是将MapWithStateRDD保存到磁盘,并将其作为initialRDD读回。无论如何,我觉得这不是一个正确的选择

  • 我只发现了一个没有答案的类似问题

    谢谢

    代码:

      def getStreamingContext(streamingApp : (SparkContext, Duration) => StreamingContext, sc : SparkContext, batchDuration: Duration) = {
        val creatingFunc = () => streamingApp(sc, batchDuration)
        val ssc = sc.getCheckpointDir match {
          case Some(checkpointDir) =>
            println("Get or Create Context")
            StreamingContext.getActiveOrCreate(checkpointDir, creatingFunc, sc.hadoopConfiguration, createOnError = true)
          case None =>
            print("New Context")
            StreamingContext.getActiveOrCreate(creatingFunc)
        }
        sc.getCheckpointDir.foreach( cp => ssc.checkpoint(cp))
        println(ssc.getState())
        ssc
      }
    

    Spark 2.1.0版

    我让它工作了。。。感谢以下问答[链接]()

    在updateStateByKey之后,我错过了下面的一行

    statefulActivity.检查点(分钟(1))


    在启用检查点目录的同时添加持续时间会记住重新启动时的状态。

    使用检查点,但您说您是这样启用的……您能显示初始化StreamingContext和设置检查点的代码吗?Spark版本是什么?谢谢你的快速回复Jacek.btw:我还尝试了一个来自课程材料的练习,该课程材料有完整的代码和检查点,并且表现相同。我想我可能必须将状态保存到HDF并在重新启动时初始化。我让它工作了。。。感谢下面的Q/A[link](),在updateStateByKey statefulActivity.checkpoint(分钟(1))解决了我的问题之后,我错过了下面的一行。