google-cloud-dataflow - 在 GCP Dataflow 上运行的 Apache Beam 如何处理批量的大型 SQL 表?

标签 google-cloud-dataflow apache-beam

我有一个大约有 1TB 数据的 SQL 表,我想将该表 ETL 到 GCS。我不明白的是 Apache Beam 如何读取表,是否以 block 的形式存在,如果是, block 的大小是多少以及如何配置它?另外,如果失败,工作是否会从离开的地方开始?

最佳答案

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/是这种分区方法的一个示例。

关于google-cloud-dataflow - 在 GCP Dataflow 上运行的 Apache Beam 如何处理批量的大型 SQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61679469/

相关文章:

python - 如何使用 Apache Beam 在 Python 中将有界 pcollection 转换为无界?

go - "No filesystem found for scheme gs"在谷歌云平台运行数据流时

google-cloud-dataflow - 用于在 Dataflow 中分组的自定义键

python - 属性错误: 'module' object has no attribute 'ensure_str'

java - 使用 Beam/Dataflow 下拉每个元素上的 BigQuery 表架构很慢

sql - 带单引号的 ADF 数据流连接表达式

java - 在云数据库上使用 Apache Beam 更改文件元数据?

google-bigquery - Apache 光束 : Transform an objects having a list of objects to multiple TableRows to write to BigQuery

java - 在 Scala 中初始化 Apache Beam 测试管道失败

java - 在数据流中执行聚合