Spark Streaming Multiple Streaming Jobs

时间:2016-11-15 17:20:32

标签: java apache-spark parallel-processing stream streaming

我有一个应用程序,其中多个用户可以指定Spark工作流,然后将其发送到驱动程序并在群集上执行。

现在应该扩展工作流以支持流式数据源。可能的工作流程可能涉及:

  1. 使用特定主题标签推送推文
  2. 转换每条推文
  3. 对窗口框架和可视化进行分析
  4. 如果一次只启动一个流但是提供了" ,则可以在此JVM中启动一个StreamingContext。"错误。

    我尝试了不同的已知方法,但没有一个为我工作(" spark.driver.allowMultipleContexts = true",增加" spark.streaming.concurrentJobs",试图运行每个方法在不同的池中传输上下文等。)

    有人可以告诉我目前关于使用Spark流的并行流的最佳做法是什么? Thx提前!

1 个答案:

答案 0 :(得分:0)

我假设您在现有应用程序中以编程方式启动了spark流式传输作业 - 因此JVM出现错误。 Spark特别不适合在不同应用程序的范围内运行,即使这在独立模式下也是可行的。如果要以编程方式在群集上启动spark流式处理作业,则需要使用Launcher,如下所示:

import org.apache.spark.launcher.SparkLauncher

object Launcher extends App {

val spark = new SparkLauncher()
.setSparkHome("...")
.setAppResource("..path to your jar...")
.setMainClass("..your app...")
.setMaster("yarn")
.launch();
spark.waitFor();

}

这是一篇博客文章,其中包含一些例子:

https://blog.knoldus.com/2015/06/26/startdeploy-apache-spark-application-programmatically-using-spark-launcher/

API文档在这里:

https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/launcher/SparkLauncher.html