使用调度程序池为多个流的工作负载
使多个流查询并发地执行工作在一个共享集群,您可以配置查询执行在不同的调度器池。
请注意
你不能指定线程池处理统一编目对象。
调度器池如何工作?
默认情况下,所有始于一个笔记本运行在相同的查询公平调度池。从所有的工作由触发器生成流查询一个笔记本在首先在运行一个接一个,先出(FIFO)秩序。这可能会导致不必要的延迟查询,因为他们没有有效地共享集群资源。
调度器池允许您声明的结构化流查询共享计算资源。
下面的例子分配query1
专用的池,而query2
和query3
共享一个调度程序池。
#运行流query1调度器pool1火花。sparkContext。setLocalProperty(“spark.scheduler.pool”,“pool1”)df。writeStream。queryName(“query1”)。格式(“δ”)。开始(path1)#在调度器pool2流query2运行火花。sparkContext。setLocalProperty(“spark.scheduler.pool”,“pool2”)df。writeStream。queryName(“query2”)。格式(“δ”)。开始(path2)#在调度器pool2流query3运行火花。sparkContext。setLocalProperty(“spark.scheduler.pool”,“pool2”)df。writeStream。queryName(“query3”)。格式(“δ”)。开始(path3)
请注意
当地房地产的配置必须在相同的笔记本电池,你开始你的流媒体查询。
看到Apache公平调度器文档为更多的细节。