The Linux Foundation Projects
Delta Lake

使用 BigQuery 原生查询 Delta Lake

作者:Gaurav SaxenaJustin Levandoski

使用 Delta Lake 表的用户现在可以轻松地将工作负载与 BigQuery 集成,从而确保安全且更受管理的互操作性。BigQuery 与 Delta Lake 日志的原生集成使其查询引擎能够利用有价值的元数据,从而简化了 Delta 表的查询过程,同时提高了性能并提供了细粒度的安全控制。此集成是 BigQuery 对开放统一平台持续承诺的又一例证,它使用户能够查询任何格式或类型的数据。BigQuery 现在支持查询所有主要的开放表格式数据,包括 Apache Iceberg、Apache Hudi 和 Delta.io。

以前查询 Delta Lake 表的方法需要基于清单的方法,涉及手动刷新和潜在的读取过时。这项新集成通过直接从 Delta 日志解析表的状体来简化此过程。将 Delta 日志元数据用于查询,结合 BigLake 的治理模型,可增强管理、性能和安全性。

跨多个云的查询支持

要使用 BigQuery 查询 Delta 表,首先创建一个 BigLake 表,并将格式类型设置为 Delta。将此表指向 Delta 表的对象存储前缀。这会指示 BigLake 创建一个表,该表将 Delta 日志引用为元数据的真实来源。此功能在 Amazon S3、Azure Blob 存储、ADLS Gen2 和 Google Cloud Storage 上处于公开预览阶段。

创建后,您可以像查询 BigQuery 中的任何其他表一样查询 BigLake 表。BigQuery 在查询时解析 Delta 日志元数据,从而实现优化的查询计划、改进的性能,并消除了与以前方法相关的读取过时限制。当表驻留在 Amazon S3 或 ADLS Gen2 上时,BigQuery Omni 用于查询数据,并在相应的云中本地处理数据以获得性能和成本优势。

为了更轻松地管理和适应不断演变的数据,BigQuery 还可以自动检测和更新 Delta 表中的架构更改。

使用 BigLake 创建 Delta 表

SQL

CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.DELTALAKE_TABLE_NAME`
WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
OPTIONS (
  format ="DELTA_LAKE",
  uris=['DELTA_TABLE_GCS_BASE_PATH']);

查询表

SQL

SELECT field1, field2 FROM mydataset.my_cloud_storage_table;

启用自动架构管理

命令行

bq update --autodetect_schema PROJECT_ID :DATASET.DELTALAKE_TABLE_NAME

通过 BigLake 实现统一的细粒度安全性

BigLake 提供了一个一致的安全模型,可保护 BigQuery 存储、Amazon S3、Azure Data Lake Storage Gen2 和 Google Cloud Storage 中的数据,无论格式如何。它提供行级和列级的细粒度权限,并支持数据屏蔽。您可以使用 SQL 语句轻松地在 Delta 表上设置细粒度权限,或使用与 Dataplex 的集成来简化大规模管理。Dataplex 允许您集中定义这些策略,然后将其下推到 BigLake。当 BigQuery(在 Google Cloud Storage 上)或 BigQuery Omni(在 AWS 和 Azure 上)访问数据时,BigLake 会强制执行这些细粒度权限。我们建议使用此安全模型来满足您组织的治理需求。

立即开始!

请参阅我们的文档,开始使用 BigQuery 查询您的 Delta 表。如需进一步帮助,请联系您的 Google Cloud 代表或发送电子邮件至biglake-help@google.com