BigQuery Omni 简介
借助 BigQuery Omni,您可以使用 BigLake 表对存储在 Amazon Simple Storage Service (Amazon S3) 或 Azure Blob Storage 中的数据运行 BigQuery 分析。
许多组织会将数据存储在多个公有云中。这些数据往往处于孤岛状态,因为很难获取所有数据的数据分析。想必您会想要使用一个低成本、快速且不会产生分散化数据治理开销的多云数据工具来分析这些数据。现在,借助 BigQuery Omni,便可通过统一的界面避免上述的一些麻烦。
如需对外部数据运行 BigQuery 分析,您首先需要连接到 Amazon S3 或 Blob Storage。如果您想查询外部数据,则需要创建引用 Amazon S3 或 Blob Storage 数据的 BigLake 表。
您还可以使用跨云转移在云之间移动数据以组合云之间的数据,或使用跨云联接跨云查询数据。BigQuery Omni 提供了一种跨云分析解决方案,该解决方案能够就地分析数据并在必要时灵活地复制数据。 如需了解详情,请参阅通过跨云传输加载数据和跨云联接。
架构
BigQuery 的架构会将计算功能与存储功能分离开来,使 BigQuery 能够根据需要进行扩容以处理非常大的工作负载。BigQuery Omni 则扩展了该架构,它能够在其他云端运行 BigQuery 查询引擎。因此,您不必以物理方式将数据移动到 BigQuery 存储空间中;它可以就地处理数据。
查询结果可以通过一个安全连接返回到 Google Cloud,例如显示在 Google Cloud 控制台中。或者,您也可以将结果直接写入 Amazon S3 存储桶或 Blob Storage。在这种情况下,查询结果不会跨云移动。
BigQuery Omni 会使用标准 AWS IAM 角色或 Azure Active Directory 主账号来访问您的订阅中的数据。您可以向 BigQuery Omni 授予读取或写入权限,并且可以随时撤消其访问权限。
查询数据时的数据流
下图描述了数据如何在 Google Cloud 与 AWS 或 Azure 之间流动,以便执行以下查询:
SELECT
语句CREATE EXTERNAL TABLE
语句
- BigQuery 控制平面通过 Google Cloud 控制台、bq 命令行工具、API 方法或客户端库接收来自您的查询作业。
- BigQuery 控制平面会将待处理的查询作业发送到 AWS 或 Azure 上的 BigQuery 数据平面。
- BigQuery 数据平面通过 VPN 连接从控制平面接收查询。
- BigQuery 数据平面从 Amazon S3 存储桶或 Blob Storage 读取表数据。
- BigQuery 数据平面对表数据运行查询作业。 系统会在指定的 AWS 或 Azure 区域处理表数据。
- 查询结果会通过 VPN 连接从数据平面传输到控制平面。
- BigQuery 控制平面会接收查询作业结果,以将其作为对查询作业的响应显示给您。系统会存储此数据最长 24 小时。
- 查询结果会返回给您。
如需了解详情,请参阅查询 Amazon S3 数据和查询 Blob Storage 数据。
导出数据时的数据流
下图描述了在 EXPORT DATA
语句期间数据在 Google Cloud 与 AWS 或 Azure 之间如何移动。
- BigQuery 控制平面通过 Google Cloud 控制台、bq 命令行工具、API 方法或客户端库接收来自您的导出查询作业。该查询包含 Amazon S3 存储桶或 Blob Storage 中查询结果的目标路径。
- BigQuery 控制平面会将待处理的导出查询作业发送到 BigQuery 数据平面(在 AWS 或 Azure 上)。
- BigQuery 数据平面通过 VPN 连接从控制平面接收导出查询。
- BigQuery 数据平面从 Amazon S3 存储桶或 Blob Storage 读取表数据。
- BigQuery 数据平面对表数据运行查询作业。 系统会在指定的 AWS 或 Azure 区域处理表数据。
- BigQuery 会将查询结果写入 Amazon S3 存储桶或 Blob Storage 中的指定目标路径。
如需了解详情,请参阅将查询结果导出到 Amazon S3 和 Blob Storage。
优势
性能。您可以更快地获取数据分析,因为数据不会跨云复制,并且查询会在数据所在的区域中就地运行。
费用。 您可以节省出站数据转移费用,因为数据不会移动。您的 AWS 或 Azure 账号不会产生与 BigQuery Omni 分析相关的额外费用,因为查询是在由 Google 管理的集群上运行的。您只需使用 BigQuery 价格模式为您运行的查询付费。
安全性和数据治理。您可以在自己的 AWS 或 Azure 订阅中管理数据。您无需将原始数据从您的公有云中移动或复制出来。所有计算都在您的数据所属区域中运行的 BigQuery 多租户服务中完成。
无服务器架构。与 BigQuery 的其余部分一样,BigQuery Omni 也是一种无服务器架构。Google 会负责部署和管理运行 BigQuery Omni 的集群。您无需预配任何资源或管理任何集群。
便于管理。BigQuery Omni 通过 Google Cloud 提供了统一的管理界面。BigQuery Omni 可以使用现有的 Google Cloud 账号和 BigQuery 项目。您可以在 Google Cloud 控制台中编写 GoogleSQL 查询来查询 AWS 或 Azure 中的数据,并且可以查看显示在 Google Cloud 控制台中的结果。
跨云转移。您可以将 S3 存储桶和 Blob Storage 中的数据加载到 BigQuery 标准表中。如需了解详情,请参阅将 Amazon S3 数据转移到 BigQuery 以及将 Blob Storage 数据转移到 BigQuery。
启用元数据缓存以提高性能
您可以使用缓存的元数据来提高引用 Amazon S3 数据的 BigLake 表的查询性能。如果您要处理大量文件,或者数据是 Hive 分区,则此方法特别有用。
元数据包括文件中的文件名、分区信息和物理元数据(例如行数)。您可以选择是否为表启用元数据缓存。包含大量文件和使用 Hive 分区过滤条件的查询从元数据缓存中获益最多。如果您未启用元数据缓存,则针对表的查询必须读取外部数据源来获取对象元数据。读取这些数据会增加查询延迟时间;列出外部数据源中的数百万个文件可能需要几分钟时间。如果启用了元数据缓存,查询可以避免列出外部数据源中的文件,并且可以更快地对文件进行分区和删减。
有两个属性可以控制此功能:
- 最大过时指定查询何时使用缓存的元数据。
- 元数据缓存模式指定元数据的收集方式。
启用元数据缓存后,您需要指定对表执行的操作可以接受的元数据过时的最大间隔时间。例如,当指定间隔时间为 1 小时的时候,如果缓存的元数据在过去 1 小时内刷新,针对表的操作会使用缓存的元数据。如果缓存的元数据早于该值,操作会回退到从 Amazon S3 检索元数据。您可以指定从 30 分钟到 7 天的过时间隔时间。
您可以选择自动或手动刷新缓存:
- 对于自动刷新,缓存会按系统定义的间隔时间刷新,间隔时间通常为 30 到 60 分钟。如果 Amazon S3 中的文件添加、删除或修改的间隔时间是随机的,则自动刷新缓存是一种很好的方法。如果您需要控制刷新的时间(例如在提取-转换-加载作业结束时触发刷新),请使用手动刷新。
对于手动刷新,您需要运行
BQ.REFRESH_EXTERNAL_METADATA_CACHE
系统过程,以按符合要求的时间表刷新元数据缓存。如果 Amazon S3 中的文件添加、删除或修改的间隔时间是已知的(例如作为流水线的输出),则手动刷新缓存是一种很好的方法。如果您发出多个并发手动刷新,则只有一个刷新会成功。
如果元数据缓存在 7 天内没有刷新,则会失效。
手动和自动缓存刷新都会以 INTERACTIVE
查询优先级执行。
如果您选择使用自动刷新,我们建议您创建预留,然后为运行元数据缓存刷新作业的项目创建具有 BACKGROUND
作业类型的分配。这样可以防止刷新作业与用户查询资源争用资源,如果没有足够可用资源,这些作业可能会失败。
在设置过时间隔时间和元数据缓存模式值之前,您应该考虑它们的交互方式。请参考以下示例:
- 如果您要手动刷新表的元数据缓存并将过时间隔时间设置为 2 天,那么如果希望针对该表的操作使用缓存的元数据,您必须每 2 天(或更短时间)运行一次
BQ.REFRESH_EXTERNAL_METADATA_CACHE
系统过程。 - 如果您要自动刷新表的元数据缓存并将过时间隔时间设置为 30 分钟,那么在元数据缓存刷新时间较长(通常为 30 到 60 分钟)的情况下,针对该表的某些操作可能会从 Amazon S3 读取。
如需查找元数据刷新作业的相关信息,请查询 INFORMATION_SCHEMA.JOBS
视图,如以下示例所示:
SELECT * FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time DESC LIMIT 10;
如需了解详情,请参阅元数据缓存。
具有具体化视图的启用缓存的表
在查询存储在 Amazon S3 中的结构化数据时,您可以使用通过 Amazon Simple Storage Service (Amazon S3) 元数据缓存表创建具体化视图来提高性能和效率。这些具体化视图的功能与 BigQuery 管理的存储表的具体化视图一样,包括自动刷新和智能调整的优势。
如需使物化视图中的 Amazon S3 数据在受支持的 BigQuery 区域中可用于联接,请创建物化视图的副本。您只能基于已获授权的物化视图创建物化视图副本。
限制
除了 BigLake 表的限制之外,以下限制也适用于 BigQuery Omni,其中包括基于 Amazon S3 和 Blob Storage 数据的 BigLake 表:
- 标准版和企业 Plus 版不支持处理任何 BigQuery Omni 区域中的数据。如需详细了解版本,请参阅 BigQuery 版本简介。
OBJECT_PRIVILEGES
、STREAMING_TIMELINE_BY_*
、TABLE_SNAPSHOTS
、TABLE_STORAGE
、TABLE_CONSTRAINTS
、KEY_COLUMN_USAGE
、CONSTRAINT_COLUMN_USAGE
和PARTITIONS
INFORMATION_SCHEMA
视图不适用于基于 Amazon S3 和 Blob Storage 数据的 BigLake 表。- Blob Storage 不支持具体化视图。
- JavaScript UDF 不受支持。
不支持以下 SQL 语句:
- BigQuery ML 语句。
- 需要在 BigQuery 中管理数据的数据定义语言 (DDL) 语句。例如,支持
CREATE EXTERNAL TABLE
、CREATE SCHEMA
或CREATE RESERVATION
,但不支持CREATE MATERIALIZED VIEW
。 - 数据操纵语言 (DML) 语句。
以下限制适用于查询和读取目标临时表(预览版):
- 不支持使用
SELECT
语句查询目标临时表。 - 不支持使用 BigQuery Storage Read API 从目标临时表读取数据。
- 使用 ODBC 驱动程序时,不支持高吞吐量读取(
EnableHTAPI
选项)。
- 不支持使用
只有 API 或 CLI 方法支持计划查询。对于查询,已停用目标表选项。仅允许执行
EXPORT DATA
查询。如果您的查询使用
ORDER BY
子句并且结果大小大于 256 MB,则查询会失败。如需解决此问题,请减小结果大小或从查询中移除ORDER BY
子句。 如需详细了解 BigQuery Omni 配额,请参阅配额和限制。不支持将客户管理的加密密钥 (CMEK) 用于数据集和外部表。
价格
如需了解 BigQuery Omni 中的价格和限时优惠,请参阅 BigQuery Omni 价格。
配额和限制
如需了解 BigQuery Omni 配额,请参阅配额和限制。
如果查询结果大于 20 GiB,请考虑将结果导出到 Amazon S3 或 Blob Storage。 如需了解 BigQuery Connection API 的配额,请参阅 BigQuery Connection API。
位置
BigQuery Omni 会在包含待查询表的数据集所在的位置处理查询。创建数据集后,该位置无法更改。 您的数据位于您自己的 AWS 或 Azure 账号中。BigQuery Omni 区域支持企业版预留和按需计算(分析)价格。如需详细了解版本,请参阅 BigQuery 版本简介。区域说明 | 区域名称 | 共置 BigQuery 区域 | |
---|---|---|---|
AWS | |||
AWS - 美国东部(北弗吉尼亚) | aws-us-east-1 |
us-east4 |
|
AWS - 美国西部(俄勒冈) | aws-us-west-2 |
us-west1 |
|
AWS - 亚太地区(首尔) | aws-ap-northeast-2 |
asia-northeast3 |
|
AWS - 亚太地区(悉尼) | aws-ap-southeast-2 |
australia-southeast1 |
|
AWS - 欧洲(爱尔兰) | aws-eu-west-1 |
europe-west1 |
|
AWS - 欧洲(法兰克福) | aws-eu-central-1 |
europe-west3 |
|
Azure | |||
Azure - 美国东部 2 | azure-eastus2 |
us-east4 |
后续步骤
- 了解如何连接到 Amazon S3 和 Blob Storage。
- 了解如何创建 Amazon S3 和 Blob Storage BigLake 表。
- 了解如何查询 Amazon S3 和 Blob Storage BigLake 表。
- 了解如何使用跨云联接将 Amazon S3 和 Blob Storage BigLake 表与 Google Cloud 表联接。
- 了解如何将查询结果导出到 Amazon S3 和 Blob Storage。
- 了解如何将数据从 Amazon S3 转移到 BigQuery 以及将数据从 Blob Storage 转移到 BigQuery。
- 了解如何设置 VPC Service Controls 边界。
- 了解如何指定您的位置