无法将Streamz Kafka流转换为Dask流

时间:2019-07-15 09:57:39

标签: apache-kafka dask dask-distributed

我无法将Streamz流转换为使用Kafka源代码生成的Dask流。PFB代码

from streamz import Stream
from streamz.dataframe import Random
from streamz.dataframe import DataFrame
import json
from dask.distributed import Client
client = Client()
source = Stream.from_kafka(['logs'],
       {'bootstrap.servers': 'kafkaXX:9092',
        'group.id': 'streamz'}) 
source.scatter().map(json.loads).buffer(8).gather().sink(print)
source.start()

我收到此错误消息

ValueError: Two different event loops active

1 个答案:

答案 0 :(得分:0)

如果没有另外指示,kafka源将在线程中启动其自己的事件循环。对Client()的调用也可以做到这一点。要将循环从一个传递到另一个,您可以

Stream.from_kafka(..., loop=client.loop)

请注意,对.scatter()的调用也需要对事件循环的显式访问,但是由于它是特定于dask的,因此它知道使用活动的任何客户端的循环。