我有一个应用程序,其中多个用户可以指定Spark工作流,然后将其发送到驱动程序并在群集上执行。
现在应该扩展工作流以支持流式数据源。可能的工作流程可能涉及:
如果一次只启动一个流但是提供了" ,则可以在此JVM中启动一个StreamingContext。"错误。
我尝试了不同的已知方法,但没有一个为我工作(" spark.driver.allowMultipleContexts = true",增加" spark.streaming.concurrentJobs",试图运行每个方法在不同的池中传输上下文等。)
有人可以告诉我目前关于使用Spark流的并行流的最佳做法是什么? Thx提前!
答案 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();
}
这是一篇博客文章,其中包含一些例子:
API文档在这里:
https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/launcher/SparkLauncher.html