Google cloud storage 我们可以使用单个Google云数据流将数据从多个Pubsub(源)写入多个GC(接收器)吗?

Google cloud storage 我们可以使用单个Google云数据流将数据从多个Pubsub(源)写入多个GC(接收器)吗?,google-cloud-storage,google-cloud-dataflow,pipeline,google-cloud-pubsub,apache-beam,Google Cloud Storage,Google Cloud Dataflow,Pipeline,Google Cloud Pubsub,Apache Beam,我有3个不同的pubsub(源)和3个相应的GCS bucket(汇),用于处理类似的数据。目前,我的Java应用程序提供了三个云数据流资产,它们使用窗口写入将数据从PubSub写入GCS存储桶 Current pipelines: pubsub_topic_abc ---> dataflow_abc ---> gcs_bucket_abc pubsub_topic_def ---> dataflow_def ---> gcs_bucket_def pubsub_to

我有3个不同的pubsub(源)和3个相应的GCS bucket(汇),用于处理类似的数据。目前,我的Java应用程序提供了三个云数据流资产,它们使用窗口写入将数据从PubSub写入GCS存储桶

Current pipelines:
pubsub_topic_abc ---> dataflow_abc ---> gcs_bucket_abc

pubsub_topic_def ---> dataflow_def ---> gcs_bucket_def

pubsub_topic_ghi ---> dataflow_ghi ---> gcs_bucket_ghi
有没有一种方法可以使管道使用单个数据流,从多个源读取数据并将其写入多个相应的接收器?基本上,来自
pubsub\u topic\u abc
的数据应该进入
gcs\u bucket\u abc

Desired pipeline:
pubsub_topic_abc ----                  ---> gcs_bucket_abc
                    |                 |
pubsub_topic_def -------> dataflow -------> gcs_bucket_def
                    |                 |
pubsub_topic_ghi ----                  ---> gcs_bucket_ghi

我发现这解释了一个数据流如何从多个pubsub读取,但我不确定如何实现多个sink写入功能(动态输出路径?)。有可能吗?

是的,有可能。在代码中,执行如下循环

  • 对于所有源(例如源名称数组)
    • 在此源上创建Pubsub读取器(您将获得一个PCollection)
    • 在PCollection上应用转换
    • 为转换的PCollection创建专用于源的接收器
您可以重用转换,但源和接收器是特定的。您的数据流图将显示这一点

pubsub_topic_abc ---> transformation ---> gcs_bucket_abc

pubsub_topic_def ---> transformation ---> gcs_bucket_def

pubsub_topic_ghi ---> transformation ---> gcs_bucket_ghi
但所有这些都将在相同的数据流作业中运行