使用python spark直接方法时如何从检查点恢复?

使用python spark直接方法时如何从检查点恢复?,python,apache-spark,apache-kafka,pyspark,spark-streaming,Python,Apache Spark,Apache Kafka,Pyspark,Spark Streaming,阅读后,我尝试在spark streaming中使用checkpoint和getOrCreate。一些片段: def get_ssc(): sc = SparkContext("yarn-client") ssc = StreamingContext(sc, 10) # calc every 10s ks = KafkaUtils.createDirectStream( ssc, ['lucky-track'], {"metadata.broker.li

阅读后,我尝试在spark streaming中使用
checkpoint
getOrCreate
。一些片段:

def get_ssc():
    sc = SparkContext("yarn-client")
    ssc = StreamingContext(sc, 10)  # calc every 10s
    ks = KafkaUtils.createDirectStream(
        ssc, ['lucky-track'], {"metadata.broker.list": KAFKA_BROKER})
    process_data(ks)

    ssc.checkpoint(CHECKPOINT_DIR)
    return ssc

if __name__ == '__main__':
    ssc = StreamingContext.getOrCreate(CHECKPOINT_DIR, get_ssc)

    ssc.start()
    ssc.awaitTermination()
代码可以很好地用于恢复,但是恢复的上下文总是在旧的进程函数上工作。这意味着,即使我更改了map/reduce函数代码,它也根本不起作用


直到现在,spark(1.5.2)仍然不支持python的任意偏移量。那么,我应该怎么做才能使它正常工作呢?

这种行为是“设计的”,对于java/scala Spark应用程序也是有效的。整个代码在检查点时被序列化。如果代码更改,检查点数据应该被截断。

嗯……我知道了。那么,除了我自己录制偏移量外,你知道恢复的正确方法吗?