【问题标题】:Google Cloud Dataflow - Java SDK vs Python SDKGoogle Cloud Dataflow - Java SDK 与 Python SDK
【发布时间】:2020-10-27 21:54:46
【问题描述】:

我开始使用 Google Cloud Dataflow 进行批处理和流式处理。正在开发的作业主要用于从不同来源(MySQL、Kafka 和文件系统)摄取数据、清理它们、进行一些流式传输和浴聚合,以及写回 Google Cloud Storage。

鉴于这些任务,对于使用 Java SDKPython SDK 编写作业有什么建议吗?它们之间在性能和功能方面有什么明显差异吗?

例如,我注意到对于 Java SDK,内置 I/O PTransform JdbcIO 可用。这个PTransform 在 JDBC 上读写数据,这在 Python SDK 中是不可用的(到目前为止)。是否可以仅使用 Java SDK 创建从 MySQL 数据库读取并写入 Google Cloud Storage 的管道,而其他管道使用不同的 SDK(例如 Python)?

提前感谢您的宝贵时间!

【问题讨论】:

    标签: java python google-cloud-platform google-cloud-dataflow apache-beam


    【解决方案1】:

    我会继续使用java SDK,因为 Java 中的功能和外部连接器更多。但python SDK 也在迎头赶上。

    就性能方面的考虑,当我们将Beam 作业提交到数据流时,作业步骤将在API 调用中发送到谷歌云数据流。因此,我认为就数据流而言,性能没有显着差异

    【讨论】:

    • 应该注意的是,有一个 PR 通过多语言支持在 Python 中添加 JDBC IO(以及其他),这将允许更多地根据库/生态系统选择语言/tooling 你有什么功能可用。 github.com/apache/beam/pull/12145
    【解决方案2】:

    我一直在使用 Python SDK 进行开发。虽然 Java SDK 中内置了 PTransform JdbcIO,但也有一些社区包,例如 beam-nuggets 可用于 python,可用于读取和写入MySQL。这就是我用来开发 ETL 的方法。

    包链接:https://pypi.org/project/beam-nuggets/

    总体而言,Java SDK 中还有更多功能。

    如果您对python 更满意,您绝对可以在java 中编写一些需要使用某些独特功能的管道,其余的在python 中编写。

    【讨论】:

    • 它似乎没有为 Cloud SQL Proxy 提供任何支持。所以,我不确定人们如何在生产中使用它。
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多