使用python spark直接方法时如何从检查点恢复?
阅读后,我尝试在spark streaming中使用使用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
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应用程序也是有效的。整个代码在检查点时被序列化。如果代码更改,检查点数据应该被截断。嗯……我知道了。那么,除了我自己录制偏移量外,你知道恢复的正确方法吗?