0

我正在尝试将数据从 Cloud Pub/Sub 传递到 Google Cloud Storage。当我使用 runnerDataflowRunner时,管道会发布到 Google Cloud Dataflow 并按预期工作。但是,对于某些测试,我希望管道在本地运行(但仍从 Cloud Pub/Sub 读取并写入 Cloud Storage)。当我使用运行程序 DirectRunner 时,该进程会写出INFO:apache_beam.runners.direct.direct_runner:Running pipeline with DirectRunner.,但是当新消息发布到 Pub/Sub 时什么也不做。

我正在使用以下命令执行管道:

python dev_radim_dataflow_gcs_direct.py ^
  --project=<GCP_PROJECT> ^
  --region="europe-west3" ^
  --input_subscription="projects/data-uat-280814/subscriptions/dev-radim-dataflow" ^
  --output_path=gs://dev_radim/dataflow_dest_local/ ^
  --runner=DirectRunner ^
  --window_size=1 ^
  --temp_location=gs://dev_radim/dataflow_temp_local/

完整的 dev_radim_dataflow_gcs_direct.py 文件在这里:https ://pastebin.com/W7VphH5A

任何想法为什么消息不能从 Pub/Sub 到 GCS?

4

1 回答 1

0

@RadRussian 发表评论作为答案,因为这也可能发生在其他人身上:

有另一个消费者从同一个订阅中读取,因此没有消息到达在 DirectRunner 中运行的管道。在这种情况下,消费者是一个 Dataflow 作业,但它可以是任何东西。

于 2021-02-23T17:30:55.343 回答