Apache kafka FlinkRunner上的ApacheBeam不';我不读卡夫卡的书

Apache kafka FlinkRunner上的ApacheBeam不';我不读卡夫卡的书,apache-kafka,apache-flink,apache-beam,Apache Kafka,Apache Flink,Apache Beam,我正在尝试运行由本地Flink集群支持的ApacheBeam,以便使用Kafka主题,如中所述 代码基本上是这个管道和一些其他设置,如 由于我试图在Flink上运行,因此我遵循了以下步骤: -->我下载了flink 1.10的二进制文件,并遵循以下步骤 我检查了服务器和任务实例的日志。两者都已正确初始化 -->使用docker启动kafka并在端口9092中公开它 -->在终端中执行以下操作: python example_1.py --runner FlinkRunner --topic my

我正在尝试运行由本地Flink集群支持的ApacheBeam,以便使用Kafka主题,如中所述

代码基本上是这个管道和一些其他设置,如

由于我试图在Flink上运行,因此我遵循了以下步骤:

-->我下载了flink 1.10的二进制文件,并遵循以下步骤

我检查了服务器和任务实例的日志。两者都已正确初始化

-->使用docker启动kafka并在端口9092中公开它

-->在终端中执行以下操作:

python example_1.py --runner FlinkRunner --topic myTopic --bootstrap_servers localhost:9092  --flink_master localhost:8081 --output output_folder
终端输出

2.23.0:从apache/beam_java_sdk摘要:sha256:3450c7953f8472c2312148a2a8324b0115fd71b3a7a01a3b017f6de69d89dfe1状态:apache/beam_java_sdk的映像是最新的:2.23.0 docker.io/apache/beam_java_sdk:2.23.0

但在向myTopic写入一些消息后,终端仍然冻结,在输出文件夹中我看不到任何东西。我检查了flink-conf.yml并给出了这两行

jobmanager.rpc.address: localhost 
jobmanager.rpc.port: 6123
我假设作业的端口是6123,而不是beam文档中指定的8081,但两个端口的行为是相同的

我对Beam/Flink很陌生,所以我不太确定它是否可以,我现在有两个假设,但不太清楚如何调查它们:

  • 与Beam与Flink通信以发送作业的端口相关的东西
  • 2.apache.beam.io.external.ReadFromKafka文档中提到的Python SDK扩展服务

    注意:要使用这些转换,您需要启动Java扩展服务。请参阅便携性文档,了解如何做到这一点。Flink用户可以使用Flink Runner作业服务器的内置扩展服务。实例化转换时必须提供扩展服务地址。

    但是在阅读可移植性文档时,它让我想起了同样的内容

    谁能帮我一下吗

    编辑:我正在使用PostgreSQL的Debezium Source Connector撰写主题,并看到了上面提到的行为。但是,当我试图手动编辑该主题时,应用程序崩溃了,原因如下

    RuntimeError: org.apache.beam.sdk.util.UserCodeException: org.apache.beam.sdk.coders.CoderException: cannot encode a null byte[]
    at org.apache.beam.sdk.util.UserCodeException.wrap(UserCodeException.java:36)
    

    你做的每件事都是正确的;Java扩展服务不再需要手动启动(请参阅)。此外,Flink在8081为web UI提供服务,但也在那里接受作业提交,因此任何一个端口都可以正常工作

    看起来您可能遇到了Python的TextIO没有遇到的问题


    此外,在Flink上运行Python管道时,实际代码会在docker映像中运行,因此如果您试图写入“本地”文件,它将是映像中的一个文件,而不是在您的计算机上。

    感谢您的更新。我在容器中检查了带有输出前缀的文件,但没有找到任何文件。我也在使用连接到PostgreSQL的Debezium编写主题。我尝试手动向主题写入一些消息,然后应用程序崩溃,错误为:org.apache.beam.sdk.util.UserCodeException:org.apache.beam.sdk.coders.CoderException:无法在org.apache.beam.sdk.util.UserCodeException.wrap(UserCodeException.java:36)处编码空字节[]如果有任何其他想法,我们都会非常感激。你可能想跟着我
    RuntimeError: org.apache.beam.sdk.util.UserCodeException: org.apache.beam.sdk.coders.CoderException: cannot encode a null byte[]
    at org.apache.beam.sdk.util.UserCodeException.wrap(UserCodeException.java:36)