从 MySQL 转移到 BigQuery 不超过限制?

Geo*_*Geo 2 google-bigquery

我有一个包含 5 个表中数百万条记录的大型数据集。我正在展平表格并尝试将它们作为一个批处理作业上传到 bigquery 中。我将使用 ruby​​ 脚本连接到 mysql 进行查询并将它们批量上传到 bigquery。

我将使用此包装器连接到 BigQuery https://github.com/abronte/BigQuery

这个包装器连接到 MySQL https://rubygems.org/gems/mysql

这个想法是我将一次从 mysql 查询 100k 条记录并上传这些记录,但我不想达到这些限制......以下限制适用于将数据流式传输到 BigQuery。

最大行大小:1 MB
HTTP 请求大小限制:10 MB
每秒最大行数:每个表每秒 100,000 行。超过此数量将导致 quota_exceeded 错误。每个请求的最大行数:500
每秒最大字节数:每个表每秒 100 MB。超过此数量将导致 quota_exceeded 错误。

来源:https : //cloud.google.com/bigquery/streaming-data-into-bigquery


问题:
(1)我是否在重新发明轮子,并且已经有一些东西可以做到这一点?
(2) 是否有一种简单的方法可以标记在 bigquery 中上传的内容以防止重复?
(3) 有什么办法可以避免达到这些限制?

Pen*_*m10 5

将数据放入 BigQuery 的方法有多种:

  • 加载作业
  • 流式插入

所以你在这里要做的是加载数据,而不是流式传输。从实时数据源流式传输很好,但是当您迁移项目时,更容易将数据转储为 CSV 或 JSON,然后使用批量加载到 BigQuery,您可以在其中加载 5TB (JSON) 大的文件。

如果你这样做,你对限制的所有麻烦都消失了,而且你不会重新发明轮子。

您的应用程序稍后将使用流式插入来随时添加表中的数据。