首页 文章

如何使spark同时运行作业中的所有任务?

提问于
浏览
0

我有一个系统,其中REST API(Flask)使用spark-sumbit将作业发送到正在运行的pyspark .

由于各种原因,我需要spark来同时运行所有任务(即我需要设置执行程序的数量=运行时期间的任务数) .

例如,如果我有20个任务而且只有4个核心,我希望每个核心执行5个任务(执行程序)而不必重新启动spark .

我知道我可以在启动spark时设置执行程序的数量,但我不想这样做,因为spark正在执行其他作业 .

这有可能通过解决方案来实现吗?

1 回答

  • 0

    使用spark调度程序池 . 下面是使用调度程序池运行多个查询的示例(一直到文章末尾,为了方便复制),同样的逻辑也适用于DStreams:https://docs.databricks.com/spark/latest/structured-streaming/production.html

    // Run streaming query1 in scheduler pool1
    spark.sparkContext.setLocalProperty("spark.scheduler.pool", "pool1")
    df.writeStream.queryName("query1").format("parquet").start(path1)
    
    // Run streaming query2 in scheduler pool2
    spark.sparkContext.setLocalProperty("spark.scheduler.pool", "pool2")
    df.writeStream.queryName("query2").format("orc").start(path2)
    

相关问题