在Apache Beam DirectRunner中使用KafkaIO时出错

时间:2020-07-07 19:22:07

标签: python ubuntu apache-kafka apache-beam apache-beam-io

我正在使用Apache Beam DirectRunner从kafka主题加载数据。我的代码如下:

conf={'bootstrap.servers':'localhost:9092'}

with beam.Pipeline() as pipeline:
        (pipeline
        |       ReadFromKafka(consumer_config=conf,topics=['topic1'])
        )

我正在使用以下命令来运行此代码:

python3 topic_to_gcs --runner DirectRunner

得到以下错误:

File "/usr/lib/python3.7/subprocess.py", line 1522, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'docker': 'docker'

预先感谢:)

1 个答案:

答案 0 :(得分:0)

目前,Apache Beam 使用所谓的外部变换从 Python SDK 中读取 Kafka。这实际上意味着,您的 Python 管道将生成一个 Java 容器并从容器内部连接到 Kafka。然后,它会将数据传回您的 Python 管道(有关此 here 的更多信息)。

如果您可以在运行管道的主机上安装 docker(以及您计划运行它的所有其他地方,如果您将运行器从 DirectRunner 更改为某个分布式运行器),那么这将是最佳选择去。

否则,您可以在我的回答 here 中了解当前状态。