将查询结果导出到 Amazon S3
本文档介绍了如何将针对 BigLake 表运行的查询的结果导出到 Amazon Simple Storage Service (Amazon S3) 存储桶。
如需了解 BigQuery 和 Amazon S3 之间数据流动的方式,请参阅导出数据时的数据流。
限制
如需查看适用于基于 Amazon S3 和 Blob Storage 的 BigLake 表的完整限制列表,请参阅限制。
准备工作
确保您拥有以下资源:
- 用于访问 Amazon S3 存储桶的连接。
- Amazon S3 BigLake 表。
- 正确的 Amazon Web Services (AWS) Identity and Access Management (IAM) 政策:
- 您必须拥有
PutObject
权限才能将数据写入 Amazon S3 存储桶。如需了解详情,请参阅为 BigQuery 创建 AWS IAM 政策。
- 您必须拥有
- 如果您使用的是基于容量的价格模式,请确保已为项目启用 BigQuery Reservation API。如需了解价格,请参阅 BigQuery Omni 价格。
导出查询结果
不管现有的任何内容如何,BigQuery Omni 都会将数据写入指定的 Amazon S3 位置。导出查询可能会覆盖现有数据,也可能会将查询结果与现有数据混合在一起。我们建议您将查询结果导出到空的 Amazon S3 存储桶。
如需运行查询,请选择以下选项之一:
SQL
在查询编辑器字段中,输入 GoogleSQL 导出查询。 GoogleSQL 是 Google Cloud 控制台中的默认语法。
在 Google Cloud 控制台中,转到 BigQuery 页面。
在查询编辑器中,输入以下语句:
EXPORT DATA WITH CONNECTION `CONNECTION_REGION.CONNECTION_NAME` OPTIONS(uri="s3://BUCKET_NAME/PATH", format="FORMAT", ...) AS QUERY
请替换以下内容:
CONNECTION_REGION
:在其中创建连接的区域。CONNECTION_NAME
:您使用写入 Amazon S3 存储桶所需的权限创建的连接名称。BUCKET_NAME
:要向其中写入数据的 Amazon S3 存储桶。PATH
:您要将导出的文件写入其中的路径。它只能在路径字符串的叶目录中的任何位置包含一个通配符*
,例如../aa/*
、../aa/b*c
、../aa/*bc
、../aa/bc*
。BigQuery 会将*
替换为0000..N
,具体取决于导出的文件数。BigQuery 会确定文件计数和大小。如果 BigQuery 决定导出两个文件,则第一个文件名中的*
会被替换为000000000000
,第二个文件名中的*
会被替换为000000000001
。FORMAT
:支持的格式为JSON
、AVRO
、CSV
、PARQUET
。QUERY
:用于分析存储在 BigLake 表中的数据的查询。点击
运行。
如需详细了解如何运行查询,请参阅运行交互式查询。
Java
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
问题排查
如果您收到与 quota failure
相关的错误,请检查您是否为查询预留了容量。如需详细了解槽预留,请参阅本文档中的准备工作部分。
后续步骤
- 了解 BigQuery Omni。
- 了解如何导出表数据。
- 了解如何查询存储在 Amazon S3 中的数据。
- 了解如何为 BigQuery Omni 设置 VPC Service Controls。