google-cloud-dataflow - 在 GCP Dataflow 上运行的 Apache Beam 如何处理批量大型 SQL 表?
问题描述
我有一个大约 1TB 数据的 SQL 表,我想将此表 ETL 到 GCS。我不明白的是 Apache 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/就是这种分区方法的一个例子。
推荐阅读
- jmeter-5.0 - 如何在 Json 中获取值,其中键具有另一个有效负载形式的值
- html - 每当浏览器尺寸减小和使用 CSS / JSS 数据溢出时,在 HTML 的 div 标签上启用滚动条
- powerbi - Power BI 中动态变化的排名列
- r - 访问 Rcpp 中的列表列表
- pandas - 使用 Streamz 从 pandas DataFrame 流式传输
- sql - “OR”运算符与“AND”运算符的表要求有何不同?
- google-cloud-platform - BigQuery:获取某个时间点的离线用户以及他们离线的时间
- javascript - 无法正确解析通过网络发送的字符串化 Json
- ios - 使用 SwiftUI 的 TabbedView 切换到其他选项卡时查看内容不显示
- sqlite - SQLITE STRFTIME 添加多个修饰符