Apache Beam 管道使用 JdbcIO 的 Wait.on 转换无限期卡住

问题描述 投票:0回答:0

我有一个 Apache Beam 管道,当与

Wait.on
一起使用
JdbcIO
转换时,它会无限期地卡住。这是我的代码的简化版本,着重于相关部分:

PCollection<String> result = p.
    apply("Pubsub", PubsubIO.readMessagesWithAttributes().fromSubscription(/*...*/))
    .apply("Transform", ParDo.of(new MyTransformer()));

PCollection<Void> insert = result.apply("Inserting",
    JdbcIO.<String>writeVoid()
        .withDataSourceProviderFn(/*...*/)
        .withStatement(/*...*/)
        .withPreparedStatementSetter(/*...*/)
);

result.apply(Wait.on(insert))
    .apply("Selecting", new SomeTransform())
    .apply("PubsubMessaging", ParDo.of(new NextTransformer()));
p.run();

在代码中,我使用

Wait.on
转换让管道等待
insert
转换(使用 JdbcIO 写入数据)完成,然后再执行下一步。然而,管道卡住了,没有进一步进展。

我尝试在我的转换中添加日志消息以跟踪进度并确定卡住的位置,但我无法查明问题所在。我还查看了关于该主题的多个 Stack Overflow 帖子,但没有一个为我的问题提供成功的解决方案。

任何人都可以就如何调试和解决我的 Apache Beam 管道中涉及

Wait.on
和 JdbcIO 的问题提供任何见解或建议吗?

示例代码https://github.com/j1cs/app-beam

java apache-beam apache-beam-jdbcio
© www.soinside.com 2019 - 2024. All rights reserved.