【问题标题】:Google Cloud DataFlow: Synchronize/ merge multiple pipeline into oneGoogle Cloud DataFlow:将多个管道同步/合并为一个
【发布时间】:2016-11-10 12:37:58
【问题描述】:

我有两个 Google Pub/Sub 主题,我的管道通过 Windowing 流式传输。从技术上讲,我为每个主题分别有两个管道,我需要将这两个管道窗口合并为一个,以进行一些聚合,这需要在同一个窗口中组合事件。

假设我们有 Event1 和 Event2。这两个事件有两个独立的主题,分别是 Topic1 和 Topic2。我有 Pipeline1 和 Pipeline2 分别从这些主题流出。我需要以某种方式访问​​位于同一窗口内的 Event1 和 Event2 并产生一些输出。这可能吗?

【问题讨论】:

    标签: apache-spark google-cloud-platform google-cloud-dataflow


    【解决方案1】:

    您可以在同一管道中读取多个 Pubsub 主题,如下所示:

    Pipeline p = ...;
    
    PCollection<A> collection1 = p.apply(PubsubIO.Read.topic(topic1));
    PCollection<B> collection2 = p.apply(PubsubIO.Read.topic(topic2));
    

    现在,您希望如何组合这两个 PCollections 取决于您的应用程序。您可能想阅读Handling Multiple PCollections。下面简要介绍三种可能性:

    1. Flatten: 如果你只是想在每个窗口的基础上合并两个集合的内容,这会做到。

    2. ParDo with side inputs:如果一个集合的窗口相当小,那么将其作为ParDo 的侧面输入读取更大的集合可能是合理的。

    3. Joins with CoGroupByKey:您可以在两个集合之间实现多种连接,方法是在某个公共键上键入它们并使用CoGroupByKey

    【讨论】:

    • 所有已注册的可能性已弃用或至少描述它们的文档,也许可以更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2018-01-25
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多