在阅读official docs后,我尝试在火花流中使用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的任意偏移量。那么,我该怎么做才能使这项工作正常进行?
答案 0 :(得分:0)
这种行为是"设计",也适用于java / scala Spark应用程序。检查点时序列化整个代码。如果代码更改,则应截断检查点数据。