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

2024-05-01 00:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个系统,restapi(Flask)使用spark sumbit将作业发送给一个正在运行的pyspark。在

由于各种原因,我需要spark同时运行所有任务(即,我需要设置executors的数量=运行时的任务数)。在

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

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

这是否可能通过一个变通办法来实现?在


Tags: restapiflask核心数量系统作业原因执行器
1条回答
网友
1楼 · 发布于 2024-05-01 00:23:22

使用spark scheduler池。下面是一个使用调度程序池运行多个查询的示例(一直到本文末尾,为了方便复制到这里),同样的逻辑也适用于数据流: 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)

相关问题 更多 >