没有数据时停止提交作业

时间:2018-03-15 12:59:28

标签: java apache-spark streaming spark-streaming

我使用spark streaming通过自定义接收器从mq队列中获取数据。 Javastreaming上下文持续时间为10秒。 并且为队列输入定义了一个任务。

在spark UI中的事件时间线中,即使没有来自接收器的数据,我也会看到每10秒间隔提交一份作业。

这是正常行为还是如何在没有数据时停止提交作业。

JavaDStream<String> customReceiverStream = ssc.receiverStream(newJavaCustomReceiver(host, port)); 
JavaDStream<String> words =lines.flatMap(new FlatMapFunction<String, String>() { ... });
words.print();
ssc.start();
ssc.awaitTermination();

1 个答案:

答案 0 :(得分:0)

作为一种解决方法 您可以使用livy提交spark作业(使用java代码而不是cli命令)。 Livy的工作是不断检查数据库,该数据库将指示数据是否流入。数据流一停止,更改数据库中的指示器,这将导致火花作业被livy杀死。(使用Livy会议)