Java Spark流式处理多个流式处理作业

Java Spark流式处理多个流式处理作业,java,apache-spark,parallel-processing,stream,streaming,Java,Apache Spark,Parallel Processing,Stream,Streaming,我有一个应用程序,其中多个用户可以指定Spark工作流,然后将其发送到驱动程序并在集群上执行 现在应扩展工作流以支持流式数据源。可能的工作流程包括: 使用特定的标签流推特 变换每个tweet 在窗口框架上进行分析和可视化 如果一次只启动一个流,但给出“此JVM中只能启动一个StreamingContext”错误,则此操作有效 我尝试了不同的已知方法,但没有一种对我有效(“spark.driver.allowMultipleContexts=true”,增加“spark.streaming.con

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

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

  • 使用特定的标签流推特
  • 变换每个tweet
  • 在窗口框架上进行分析和可视化
  • 如果一次只启动一个流,但给出“此JVM中只能启动一个StreamingContext”错误,则此操作有效

    我尝试了不同的已知方法,但没有一种对我有效(“spark.driver.allowMultipleContexts=true”,增加“spark.streaming.concurrentJobs”,尝试在不同的池中运行每个流上下文,等等)

    有人能告诉我关于Spark流的并行流的当前最佳实践是什么吗?
    提前谢谢

    我假设您是在现有应用程序中以编程方式启动spark流媒体作业,因此JVM出现了错误。Spark不是专门为在不同应用范围内运行而设计的,即使在独立模式下也是可行的。如果您想在集群上以编程方式启动spark streaming作业,则需要使用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();
    
    }
    
    这里有一篇博客文章,其中有一些例子:

    API文档如下: