首页 > 解决方案 > Flink PubsubIO 错误“Cannot nackAll on persisting checkpoint”

问题描述

我正在尝试使用在 flink runner 上运行的 apache Beam java 代码从 pubsub 读取数据并将其写入 gcs 存储桶。我的管道如下所示:

     p.apply("Read PubSub Messages", PubsubIO.readStrings().fromTopic(options.getInputFile()))
      .apply(Window.into(FixedWindows.of(Duration.standardMinutes(options.getWindowSize()))))
      .apply("Write Files to GCS", new WriteOneFilePerWindow(options.getOutput(), numShards));

我正在使用以下 maven 命令运行此管道:

mvn exec:java -Dexec.mainClass=org.apache.beam.examples.PubsubToGcs -Pflink-runner -Dexec.args="--runner=FlinkRunner --filesToStage=target/Pubsubtogcs.jar --project=gcp_project_name"

并且 mvn 命令失败并出现以下错误:

Caused by: java.lang.IllegalStateException: Cannot nackAll on persisting checkpoint

如果我从 gcs 而不是 pubsub 读取,则管道运行成功。所以这个问题基本上与 pubsub io 操作有关。

有人可以帮忙解决这个问题的原因吗?

标签: google-cloud-platformapache-flinkapache-beamflink-streaminggoogle-cloud-pubsub

解决方案


推荐阅读