google-bigquery - 在加载到 BigQuery 之前在 Google Cloud Storage 上暂存数据是否(仍然)有优势?
问题描述
我有一个存储为本地文件的数据集(约 100 GB 未压缩的 JSON,仍可以压缩),我想将其提取到 BigQuery 中(即存储在那里)。
某些指南(例如https://www.oreilly.com/library/view/google-bigquery-the/9781492044451/ch04.html)建议先将此数据上传到 Google Cloud Storage,然后再从那里加载到 BigQuery。
这样做是否有优势,而不是直接从本地源加载到 BigQuery(bq load
在本地文件上使用)?在一些地方有人建议这可能会加快加载速度或使其更可靠(Google Bigquery 加载具有本地文件大小限制的数据,大型 bigquery 加载作业的最可靠格式),但我不确定今天是否仍然如此. 例如,根据其文档,BigQuery 支持可恢复上传以提高可靠性(https://cloud.google.com/bigquery/docs/loading-data-local#resumable),尽管我不知道何时使用这些使用bq load
. 我能发现仍然适用的唯一限制是压缩 JSON 文件的大小限制为 4 GB(https://cloud.google.com/bigquery/quotas#load_jobs)。
解决方案
是的,在云存储中拥有数据是开发过程中的一大优势。在我的情况下,我经常从 Cloud Storage 中的数据创建 BigQuery 表多次,直到我调整所有内容,如架构、模型、分区、解决错误等。每次上传数据都非常耗时。
从 Cloud Storage 到 BigQuery
优点
- 加载数据非常快
- 可以在不使用时删除 BQ 表并在需要时将其导入(BQ 表比 Cloud Storage 中的普通压缩数据大得多)
- 您保存本地存储
- 创建表期间失败的可能性较小(从本地存储可能存在网络问题、计算机问题等)
缺点
- 您需要支付一些额外的存储费用(如果您不打算经常访问您的数据,例如每月一次 - 您可以降低价格以使用近线存储)
所以我会先将数据存储到云存储,但当然,这取决于您的用例。
推荐阅读
- vert.x - 在 vertx 中,有没有办法可以更改标头并重定向到另一台服务器
- php - Laravel 5 / Eloquent - 对属于多的关系进行查询过滤
- powerbi - PowerBi 循环依赖问题
- linux - 特征分配分段错误(Open3D)
- python - 使用 XCOM 中任务的 JSON 表示在 Airflow 中运行时/动态生成任务
- node.js - 第二级包括使用续集
- bison - Lex / bison 不会生成 ast 2 + 2
- google-chrome - Web usb 设备未在 chrome windows 10 中显示
- jquery - 自定义验证属性不适用于 jquery 不显眼
- spring-boot - 具有 Pageable 的 Spring 数据弹性搜索存储库仅重新调整 10000 个文档