首页 > 解决方案 > 在 GCP Dataflow 上运行的 Apache Beam 如何处理批量大型 SQL 表?

问题描述

我有一个大约 1TB 数据的 SQL 表,我想将此表 ETL 到 GCS。我不明白的是 Apache Beam 如何读取表,是否以块为单位,如果是,那么块的大小是多少以及如何配置它?另外,如果出现故障,工作是否从它离开的地方开始?

标签: google-cloud-dataflowapache-beam

解决方案


Apache Beam 提供了JdbcIO转换工厂类来从 JDBC 可访问的数据库中读取数据。JdbcIO 使用普通的 JDBC 构造来建立连接和读取数据。

JdbcIO 不提供分块、分片或拆分其工作负载的机制。JdbcIO.Read 转换是使用 SQL 查询创建的,并且该查询在一个步骤中执行。

如果您需要对工作负载进行分区以获得某种程度的并行化,则需要将其添加到 Apache Beam 管道中。这可以通过计算分区边界的初始步骤来完成,然后将这些边界作为输入传递给 JdbcIO.Read 转换的 SQL 查询。

https://nl.devoteam.com/en/blog-post/querying-jdbc-database-parallel-google-dataflow-apache-beam/就是这种分区方法的一个例子。


推荐阅读