我有一个104行的mysql表。使用流插入的方法,它几乎需要三个小时,成本为5美元。
查询或复制mysql表并将其放入BQ的最快方法是什么?例如,是否有一种方法可以将mysql数据库(不是GCP上的数据库)直接流到GCS上的csv文件中,然后从BQ加载csv文件?我们注意到将csv文件从GCS加载到BQ中是相当快的。
以最快的方式将来自外部mysql表(或任何外部数据库)的数据以最快的方式输入BQ的建议方法是什么?
Update:请注意,我们并不试图通过执行增量提要来缩小数据大小(我们已经这样做了)。这个问题只是问,从外部数据库将1亿行数据(比如15 an )输入BQ的绝对最快的方法是什么。
发布于 2017-09-30 17:11:00
有一系列博客WePay展示了他们实现这一目标的方法:
MySQL到GCS操作符对MySQL表执行SELECT查询。选择提取大于(或等于)上一次高水印的所有数据。高水印要么是表的主键(如果表仅附加),要么是修改时间戳列(如果表接收到更新)。同样,SELECT语句也可以追溯一点时间(或多行),以捕获上次查询中可能丢弃的行(由于上面提到的问题)。
有了气流,他们设法使BigQuery与他们的MySQL数据库保持每15分钟同步。
增编(因为这个问题想知道在BigQuery中插入行的最快方法):
bq load是GCS中的一个文件(json、csv、avro),通常是批量和免费导入数据的最快方法。bq load更快(不需要等待负载调度器),并且可以将SELECT *的结果输出到新的BQ原生表中。这样做的成本将是查询的成本(扫描字节)。https://stackoverflow.com/questions/46499732
复制相似问题