2016-03-18 72 views
1

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

编辑:如果我实现一个SparkListener并且在作业结束时调用collect,那么是否所有的计算都会重做?

回答

0

当您拨打awaitTermination() StreamingContext不会退出并继续运行。您需要从另一个线程调用stop()来停止流式上下文。

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

receiver将被称为每批间隔

+0

感谢您的意见。有趣的是,我实际上正在尝试批量执行此操作,如在SparkContext中,而不是流式操作。我的Spark Streaming工作负责处理lambda体系结构的速度层,并且我有一个Spark作业来完成批处理层。我希望这更清楚。也许我误解了lambda体系结构的用法。 – SpooXter

相关问题