我们可以通过bq extract或任何其他方式将Bigquery中的每条记录下载到GCS吗?我尝试下载整个表格,单独读取它们并创建文件,但是 GCP 是否提供了开箱即用的方式?我在 BigQuery 中有 30 多万条记录,我想将它们作为单独的记录存储在 BigQuery 中以供查找之用。我们可以看看 BigQuery,但是表扫描的成本非常高,因为一些记录元素非常巨大,并且每次扫描的表扫描接近 10 TB
您可以使用
bq extract
命令或通过 GCP 提供的其他方法将数据从 BigQuery 导出到 Google Cloud Storage (GCS)。
要使用 bq extract 命令将数据从 BigQuery 导出到 GCS,您可以使用以下语法:
bq extract \
--destination_format [FORMAT] \
[PROJECT_ID]:[DATASET].[TABLE] \
[BUCKET_NAME]/[FILE_NAME_PATTERN]
将
[FORMAT]
替换为您所需的文件格式(例如 CSV、JSON、AVRO 等)。
该命令会将整个表以指定的格式导出到GCS中。但是,如果您想要单独存储每条记录以供查找,则由于记录数量较多,将每条记录导出为单独的文件可能效率不高。
您还可以在导出之前考虑以有意义的方式对数据进行分区或分段。例如,如果有一个特定的列或一组列可用于分区(例如日期范围、类别等),您可以根据这些列对数据进行分区,以减少每个导出文件中的记录数量。
此外,您还可以探索其他导出方法,例如Dataflow或使用客户端库(例如Python的google-cloud-bigquery库)来创建适合您的特定需求并优化用于查找目的的存储的自定义提取过程。
此外,根据 @Kolban 的说法,您可能想尝试存储读取 API,因为它允许您编写一个应用程序来读取所有记录,而无需执行 10TB 扫描。
将此答案发布为社区 Wiki,以便其他用户包含其他信息,以及是否有针对此用例的其他可能的解决方法/直接解决方案。此外,为了将来可能遇到此用例的社区的利益。
请随时编辑此答案。