使用 Google Cloud 控制台在 Lakehouse 中创建和查询 Iceberg 表
在本快速入门中,您将使用 Google Cloud 控制台了解无边界湖仓一体如何通过在 Lakehouse 运行时目录中存储表元数据(包括架构、快照和存储位置),让您在 Google Cloud 和开源引擎之间管理和共享 Apache Iceberg 表。
如需完成本快速入门,请在Google Cloud 控制台中执行以下步骤:
- 创建 Cloud Storage 存储桶:在 Cloud Storage 中创建一个存储桶,用于存储 Iceberg 表数据和元数据文件。
- 创建目录:在 Lakehouse 运行时目录中创建由存储桶支持且已启用凭据自动售卖的多存储桶目录。
- 创建命名空间和 Iceberg 表:使用 Google Cloud 控制台中的 Lakehouse 页面创建命名空间和启用了 BigQuery 数据操纵语言 (DML) 的 Iceberg 表。
- 在 BigQuery 中修改数据和查询表:使用 BigQuery DML 语句(
INSERT、UPDATE和DELETE)修改 Iceberg 表中的行,并使用 4 部分 P.C.N.T (Project.Catalog.Namespace.Table) 语法查询结果,无需进行 ETL 或手动注册表。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Cloud Storage, and BigQuery APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: BigLake Admin (
roles/biglake.admin), Storage Admin (roles/storage.admin), and BigQuery Job User (roles/bigquery.jobUser)Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the identifier for a user in a workforce identity pool. For details, see Represent workforce pool users in IAM policies, or contact your administrator.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
创建 Cloud Storage 存储桶
在 Google Cloud 控制台中创建一个 Cloud Storage 存储桶,用于存储 Iceberg 表数据和元数据文件:
在 Google Cloud 控制台中,前往 Cloud Storage 存储桶页面。
点击创建。
在开始使用部分中,输入一个全局唯一的存储桶名称(例如
lakehouse-quickstart-UNIQUE_ID或PROJECT_ID-lakehouse),然后点击继续。在选择数据存储位置部分中,将位置类型设置为多区域(美国 [美国的多个区域]),然后点击创建。
如果出现系统将禁止公开访问对话框,请点击确认。
在 Lakehouse 运行时目录中创建目录
在 Lakehouse 运行时目录中为 Apache Iceberg 表创建多存储桶目录。借助多存储桶目录,您可以独立于任何存储桶名称来命名目录,并将多个 Cloud Storage 存储桶与单个目录相关联。为了确保对这些存储桶的访问安全,请启用凭据分发模式,以便目录可以直接向您的客户端引擎自动颁发临时存储凭据。
在 Google Cloud 控制台中,前往 Lakehouse 页面。
点击创建目录,然后选择 Lakehouse 运行时目录。
在目录详细信息部分,配置以下设置:
- 目录类型:选择 Iceberg REST Catalog。
- Lakehouse 目录存储桶选项:选择多个存储桶目录。
- 默认目录 Cloud Storage 路径:点击浏览,选择您创建的存储桶,然后点击选择。
- 目录 ID:输入
quickstart_catalog。 - 主要位置:选择多区域,然后选择美国(美国的多个区域)。
点击继续,然后在数据路径部分中点击继续。
在身份验证方法部分中,选择凭据自动发放模式。
借助凭据自动售卖功能,目录会安全地向客户端引擎和 BigQuery 发布临时的表级存储令牌,因此外部引擎无需对您的存储桶拥有直接的 IAM 权限。
点击创建。
系统会创建您的目录,并打开目录详情页面。
在身份验证方法下,点击设置存储桶权限,然后在对话框中点击确认。
此步骤会向目录的服务账号授予 Cloud Storage 存储桶的必要权限,以便提供临时凭据。
创建命名空间和 Iceberg 表
现在您已经拥有目录,接下来可以使用Google Cloud 控制台中的 Lakehouse 页面创建命名空间和 Iceberg 表。
创建命名空间
在
quickstart_catalog的目录详情页面上,点击 创建命名空间。在命名空间名称字段中,输入
quickstart_namespace。将位置保留为系统自动填充到该字段中的默认 Cloud Storage 路径。
点击创建。
创建 Iceberg 表
在目录详情页面上,点击
quickstart_namespace。系统会打开命名空间详情页面。
点击 创建表。
在创建表窗格中,配置以下设置:
- 表格式:确认已选择 Iceberg。
- 表名称:输入
quickstart_table。 - 位置:保留默认的 Cloud Storage 路径。
在架构下,点击添加字段两次,以向表格添加两列:
- 对于第一个字段,请在字段名称字段中输入
id,然后从类型菜单中选择 INTEGER。 - 对于第二个字段,请在字段名称字段中输入
name,然后从类型菜单中选择字符串。
- 对于第一个字段,请在字段名称字段中输入
在属性下,找到预定义的
gcp.biglake.bigquery-dml.enabled属性,然后将其值从false更改为true。将gcp.biglake.table-management.enabled设置为false。将
gcp.biglake.bigquery-dml.enabled设置为true后,您可以使用 BigQuery DML 语句(例如INSERT、UPDATE、DELETE和MERGE)修改 Iceberg 表中的数据。如需了解详情,请参阅配置表格选项。点击创建。
新 Iceberg 表 (
quickstart_table) 会显示在命名空间详情页面上,并且 Lakehouse 运行时目录会将初始 Iceberg 元数据文件写入您的 Cloud Storage 存储桶。
在 BigQuery 中修改数据和查询表
创建 quickstart_table 并启用 BigQuery DML 后,您可以使用 4 部分 P.C.N.T (Project.Catalog.Namespace.Table) 语法直接在 BigQuery 中插入、更新、删除和查询行。在每个语句中,将 PROJECT_ID 替换为您的Google Cloud 项目 ID:
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,点击 SQL 查询。
插入三行示例数据:
INSERT INTO `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` (id, name) VALUES (1, 'one'), (2, 'two'), (3, 'three');
点击运行。当
INSERT语句完成时,BigQuery 会将 Parquet 数据文件写入您的 Cloud Storage 存储桶,并将新的 Iceberg 快照提交到 Lakehouse 运行时目录。修改表中的行:
UPDATE `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` SET name = 'updated' WHERE id = 1;
点击运行。
从表格中删除行:
DELETE FROM `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` WHERE id = 3;
点击运行。
查询表以验证您的更改:
SELECT * FROM `PROJECT_ID.quickstart_catalog.quickstart_namespace.quickstart_table` ORDER BY id;
点击运行。查询结果窗格会显示剩余的两行,包括
id = 1的更新值:+----+---------+ | id | name | +----+---------+ | 1 | updated | | 2 | two | +----+---------+
由于 Lakehouse 运行时目录管理 Iceberg 元数据并启用了凭据自动售卖,因此您还可以使用任何兼容 Iceberg 的开源引擎(例如 Apache Spark、Trino 或 Apache Flink)从 quickstart_table 读取数据或向其写入数据,而无需向这些引擎授予对存储桶的直接 IAM 访问权限。
清理
为避免系统向您的 Google Cloud 账号收取不必要的费用,请删除您在本快速入门中创建的资源。删除表、命名空间和目录会从 Lakehouse 运行时目录中移除元数据注册,而删除存储桶会移除存储在 Cloud Storage 中的底层 Parquet 数据和 Iceberg 元数据文件:
在 Google Cloud 控制台中,前往 Lakehouse 页面。
从目录中删除表格:
- 点击
quickstart_catalog,然后点击quickstart_namespace。 - 在 Namespace details 表格中,在
quickstart_table对应的行中,依次点击 More > Delete。 - 输入
DELETE以确认,然后点击删除。
- 点击
从目录中删除命名空间:
- 返回
quickstart_catalog的目录详情页面。 - 在
quickstart_namespace所在的行中,依次点击 更多命名空间操作 > 删除。 - 输入
DELETE以确认,然后点击删除。
- 返回
删除目录:
- 返回 Lakehouse 页面。
- 在
quickstart_catalog所在的行中,依次点击 更多目录操作 > 删除。 - 输入
DELETE以确认,然后点击删除。
删除 Cloud Storage 存储桶及其所有内容:
前往 Cloud Storage 存储桶页面。
选中您为本快速入门创建的存储桶旁边的复选框,然后点击删除。
输入
DELETE以确认,然后点击删除。
后续步骤
- 不妨尝试使用 Google Cloud CLI 创建和查询 Iceberg 表快速入门。
- 了解如何使用 BigQuery DML 语句修改数据以及配置表选项。
- 不妨尝试设置跨云数据访问权限 Codelab,了解如何在不使用 ETL 的情况下跨 Amazon Web Services (AWS)、AlloyDB for PostgreSQL 和 Cloud Storage 查询数据。
- 了解多存储桶目录和 Apache Iceberg REST 目录端点。
- 了解如何在 Lakehouse 运行时目录中管理目录。
- 了解 Lakehouse 管理的 Apache Iceberg 表。