2

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

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

4

2 回答 2

2

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

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

receiver将按批处理间隔调用

于 2016-03-18T15:34:21.127 回答
0

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

于 2016-03-21T04:54:00.267 回答