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

时间:2015-12-23 03:14:22

标签: python apache-spark apache-kafka pyspark spark-streaming

在阅读official docs后,我尝试在火花流中使用checkpointgetOrCreate。一些片段:

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的任意偏移量。那么,我该怎么做才能使这项工作正常进行?

1 个答案:

答案 0 :(得分:0)

这种行为是"设计",也适用于java / scala Spark应用程序。检查点时序列化整个代码。如果代码更改,则应截断检查点数据。