具有Dask分布的Streamz

具有Dask分布的Streamz,dask,dask-distributed,Dask,Dask Distributed,基于streamz,可以通过以下方式利用dask分布式集群: from distributed import Client client = Client('tcp://localhost:8786') # Connect to scheduler that has distributed workers from streamz import Stream source = Stream() (source.scatter() # scatter local elements

基于streamz,可以通过以下方式利用dask分布式集群:

from distributed import Client
client = Client('tcp://localhost:8786')  # Connect to scheduler that has distributed workers

from streamz import Stream
source = Stream()
(source.scatter()       # scatter local elements to cluster, creating a DaskStream
       .map(increment)  # map a function remotely
       .buffer(5)       # allow five futures to stay on the cluster at any time
       .gather()        # bring results back to local process
       .sink(write))    # call write locally

for x in range(10):
    source.emit(x)
从概念上讲,我们不清楚为什么不必将dask分布式
客户机作为参数传入以实例化
Stream()
。更具体地说,
Stream()

如果有两个调度器在不相关的节点上有工作节点,您会怎么做,如:

from distributed import Client
client_1 = Client('tcp://1.2.3.4:8786')
client_2 = Client('tcp://10.20.30.40:8786')

如何分别为
client_1
client_2
创建两个流?

Dask中的基本规则是,如果定义了分布式客户端,则将其用于任何Dask计算。如果有多个分布式客户机,请使用最近创建的仍处于活动状态的客户机


Streamz不允许您在
.scatter()
时显式选择要使用的客户端,它使用
dask.distributed.default_client()
来选择一个。您可能希望向他们提出一个问题,以允许使用
client=
关键字。该工作流甚至不适合基于上下文的方法。现在,如果您想让多个streamz同时处理不同Dask集群上的数据,您可能必须在引擎盖下操纵
Dask.distributed.client.\u global\u clients

好的,那么streamz
.scatter()
调用
Dask.distributed.default\u client()
import distributed
import dask.distributed
之间有区别吗?我看到了两者,但我不确定它们是否相同,或者一个是否优于另一个。
import distributed
是较旧的标准,现在通常建议从
dask
导入。