通过Spark Context将流式传输作业提交到spark集群

时间:2015-06-17 01:51:45

标签: scala apache-spark

我有一个operation: RDD[T] => Unit我希望使用spark streamingContext作为spark工作提交。 Spark作业应从myStream流式传输值,并将RDD[T]的每个实例传递给operation

最初,我通过使用main()函数创建一个使用myStream.foreachRDD()并在命令行上为spark-submit提供类名的Spark作业来完成此操作,但是,我宁愿避免在外壳上打电话,而是:使用streamingContext提交作业。这样既优雅又允许我随意终止工作,只需拨打streamingContext.stop()即可。

我怀疑解决方案是使用streamingContext.sparkContext.runJob()但这需要提供我在使用spark-submit时不必提供的其他参数:即单个RDD[T]实例,和分区信息。有没有合理的方法为这些参数提供“默认”值(以反映spark-submit的效用),还是有另一种方法可以让我失踪?

代码段

val streamingContext : StreamingContext = ...
val eventStream : DStream[T] = ...

eventStream.foreachRDD { rdd =>
  rdd.toLocalIterator.toSeq.take(200).foreach { message =>
    message.foreach { content =>
      // process message content
    }
  }
}

streamingContext.start()
streamingContent.awaitTermination()

注意:

也可接受(并且可能需要)只有流的特定持续时间可用作提交作业的输入。

0 个答案:

没有答案