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
Apache spark UpdateStateByKey中的Spark Streaming变量在从检查点重新启动应用程序后未更改值_Apache Spark_Pyspark_Spark Streaming - Fatal编程技术网

Apache spark UpdateStateByKey中的Spark Streaming变量在从检查点重新启动应用程序后未更改值

Apache spark UpdateStateByKey中的Spark Streaming变量在从检查点重新启动应用程序后未更改值,apache-spark,pyspark,spark-streaming,Apache Spark,Pyspark,Spark Streaming,我目前正在Python中构建一个中等复杂的应用程序,它依赖于来自多个源的有状态数据。使用Pyspark时,我遇到了一个问题,在应用程序从检查点重新启动后,updateStateByKey函数中使用的全局变量没有被分配。使用forEachRDD我有一个全局变量a,它在每次批处理运行时从文件中传播,然后a用于updateStateByKey。当我最初运行应用程序时,它按预期运行,并且在更新功能的范围内正确引用了A的值 但是,当我关闭应用程序并重新启动时,我会看到不同的行为。变量A由其相应的forEa

我目前正在Python中构建一个中等复杂的应用程序,它依赖于来自多个源的有状态数据。使用
Pyspark
时,我遇到了一个问题,在应用程序从检查点重新启动后,
updateStateByKey
函数中使用的全局变量没有被分配。使用
forEachRDD
我有一个全局变量
a
,它在每次批处理运行时从文件中传播,然后
a
用于
updateStateByKey
。当我最初运行应用程序时,它按预期运行,并且在更新功能的范围内正确引用了
A
的值

但是,当我关闭应用程序并重新启动时,我会看到不同的行为。变量
A
由其相应的
forEachRDD
函数指定正确的值,但当执行
updateStateByKey
函数时,将不使用
A
的新值。它只是。。。消失了

我可能在实施这个错误,但我希望有人能给我指出正确的方向

下面是一些伪代码:

def readfile(rdd):
    global A
    A = readFromFile

def update(new, old)
    if old in A:
        do something

dstream.forEachRDD(readfile)
dstream.updateStateByKey(update)

ssc.checkpoint('checkpoint')

A
在第一次运行时是正确的,但是当应用程序被终止并重新启动时,
A
似乎没有正确地重新分配。

A=readFromFile
的打字错误吗。我继续纠正了这一点。谢谢你抓住它。