在不超过限制的情况下从 MySQL 转移到 BigQuery?
Transfer from MySQL to BigQuery without exceeding limits?
我有一个包含 5 个表的数百万条记录的大型数据集。我正在展平表格并尝试将它们作为一个批处理作业上传到 bigquery 中。我将使用 ruby 脚本连接到 mysql 进行查询并将它们批量上传到 bigquery。
我将使用此包装器连接到 BigQuery https://github.com/abronte/BigQuery
此包装器连接到 MySQL https://rubygems.org/gems/mysql
我的想法是一次从 mysql 查询 100k 条记录并上传这些记录,但我不想达到这些限制...
以下限制适用于将数据流式传输到 BigQuery。
Maximum row size: 1 MB
HTTP request size limit: 10 MB
Maximum rows per second: 100,000 rows per second, per table. Exceeding this amount
will cause quota_exceeded errors. Maximum rows per request: 500
Maximum bytes per second: 100 MB per second, per table. Exceeding this
amount will cause quota_exceeded errors.
来源:https://cloud.google.com/bigquery/streaming-data-into-bigquery
问题:
(1) 我是在重新发明轮子吗?已经有东西可以做到这一点了?
(2) 有没有一种简单的方法来标记bigquery上传的内容以防止重复?
(3) 有什么方法可以避免达到这些限制?
将数据放入 BigQuery 的方法有多种:
- 加载作业
- 流式插入
所以您在这里尝试做的是加载数据,而不是流式传输。
从实时数据源流式传输很好,但是当您迁移项目时,更容易将数据转储为 CSV 或 JSON,然后使用批处理 loading into BigQuery,您可以在其中加载大至 5TB 的文件(JSON).
如果你这样做,你所有的限制问题都会消失,你不会重新发明轮子。
稍后您的应用程序将使用流式插入来随时添加您的表格数据。
请注意,如果您正在阅读 mysql,您可以使用 mysqldump 转储到 CSV。如果 bigquery 给您带来 CSV 格式问题,您可能需要尝试使用格式选项(尝试 --fields-terminated-by=\t --lines-terminated-by=\n
,因为制表符分隔格式比逗号分隔格式更可靠。
将数据转储到 csv 后,您可以将其上传到 google 云存储,然后 运行 一个 bigquery 加载作业以一次导入整个内容。
我有一个包含 5 个表的数百万条记录的大型数据集。我正在展平表格并尝试将它们作为一个批处理作业上传到 bigquery 中。我将使用 ruby 脚本连接到 mysql 进行查询并将它们批量上传到 bigquery。
我将使用此包装器连接到 BigQuery https://github.com/abronte/BigQuery
此包装器连接到 MySQL https://rubygems.org/gems/mysql
我的想法是一次从 mysql 查询 100k 条记录并上传这些记录,但我不想达到这些限制... 以下限制适用于将数据流式传输到 BigQuery。
Maximum row size: 1 MB
HTTP request size limit: 10 MB
Maximum rows per second: 100,000 rows per second, per table. Exceeding this amount will cause quota_exceeded errors. Maximum rows per request: 500
Maximum bytes per second: 100 MB per second, per table. Exceeding this amount will cause quota_exceeded errors.
来源:https://cloud.google.com/bigquery/streaming-data-into-bigquery
问题:
(1) 我是在重新发明轮子吗?已经有东西可以做到这一点了?
(2) 有没有一种简单的方法来标记bigquery上传的内容以防止重复?
(3) 有什么方法可以避免达到这些限制?
将数据放入 BigQuery 的方法有多种:
- 加载作业
- 流式插入
所以您在这里尝试做的是加载数据,而不是流式传输。 从实时数据源流式传输很好,但是当您迁移项目时,更容易将数据转储为 CSV 或 JSON,然后使用批处理 loading into BigQuery,您可以在其中加载大至 5TB 的文件(JSON).
如果你这样做,你所有的限制问题都会消失,你不会重新发明轮子。
稍后您的应用程序将使用流式插入来随时添加您的表格数据。
请注意,如果您正在阅读 mysql,您可以使用 mysqldump 转储到 CSV。如果 bigquery 给您带来 CSV 格式问题,您可能需要尝试使用格式选项(尝试 --fields-terminated-by=\t --lines-terminated-by=\n
,因为制表符分隔格式比逗号分隔格式更可靠。
将数据转储到 csv 后,您可以将其上传到 google 云存储,然后 运行 一个 bigquery 加载作业以一次导入整个内容。