完成后如何让Spark自动重启作业?

时间:2016-03-18 15:23:07

标签: java apache-spark lambda-architecture

我正在构建一个lambda体系结构,需要Spark作为它的批处理部分,要么定期重新启动,要么在完成后立即重新启动,或者让Spark Streaming作业调用重启。我看过事情,我可能不理解Spark上下文,但我不确定是否可以将Spark上下文放在循环中。有人可以提供任何快速指导吗?另一个快速问题是,考虑到数据将不断添加到HBase中,Spark将从中读取数据,是否有任何缓存用途?在此先感谢您的帮助。

编辑:如果我实现SparkListener并且在作业结束调用收集时,是否会重做所有计算?

2 个答案:

答案 0 :(得分:0)

当你致电awaitTermination()时,StreamingContext将不会退出并继续运行。您需要从另一个线程调用stop()来停止流式传输。

 JavaDStream<T> jsonStrem = streamingContext.receiverStream(receiver);              
 streamingContext.start();
 streamingContext.awaitTermination();

receiver将按批次间隔调用

答案 1 :(得分:0)

似乎比我想象的要容易。我怀疑while循环在RDD函数之外不起作用,因为Spark的延迟执行。我错了。此示例在此暗示可能:https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java