【问题标题】:Google Cloud Dataflow User-Defined MySQL SourceGoogle Cloud Dataflow 用户定义的 MySQL 源
【发布时间】:2015-06-23 15:58:22
【问题描述】:

我正在编写一个 Google 数据流管道,作为 Sources 之一,我需要通过查询获得 MySQL 结果集。那么有几个问题:

  1. 从 MySQL 提取数据作为我管道中的一个步骤的正确方法是什么,这可以简单地使用 JDBC 在线完成吗?
  2. 如果我确实需要实现将 MySQL 包装为 的“用户定义的数据格式”,有谁知道是否已经存在实现并且我不需要重新发明轮子? (不要误会我会喜欢写它,但我想这将是使用 MySQL 作为源的一个很常见的场景)

谢谢大家!

【问题讨论】:

    标签: java mysql google-cloud-dataflow


    【解决方案1】:

    目前,Cloud Dataflow 不提供 MySQL 输入源。

    实现对此的支持的首选方法是实现可以处理 MySQL 查询的user-defined input source

    另一种方法是在主程序中执行查询并将查询结果暂存到 GCS 中的临时位置,使用 Dataflow 处理结果,并临时删除文件。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      一个 JDBC 连接器刚刚添加到 Apache Beam (incubating)。见JdbcIO

      【讨论】:

        【解决方案3】:

        您能否澄清一下上述示例中对 GroupByKey 的需求?由于前面的 ParDo (ReadQueryResults) 返回主键上的行键,GroupByKey 本质上不会为结果集的每一行创建一个组吗?即使没有 GroupByKey,后续的 ParDo(重组)也会并行处理每行,对吗?

        【讨论】:

        • 嗯,这就是问题所在 - 如果没有 GroupByKey,后续 ParDo 很可能不会并行处理 - 它们可能会与“ReadQueryResults”ParDo 融合在一起,因为 Dataflow 优化器通常假设ParDo 不会为每个元素返回那么多结果,并且将相邻的 ParDo 融合在一起是最有效的。插入一个人工的 GroupByKey 基本上可以防止这种融合。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-08
        • 2015-08-01
        • 1970-01-01
        • 2019-04-28
        • 2019-09-26
        • 2018-03-08
        • 1970-01-01
        相关资源
        最近更新 更多