创建 Apache Iceberg 表会在 Lakehouse 运行时目录的命名空间内初始化新的表元数据和存储空间。
如果您想在目录中提供现有的 Apache Iceberg 表,请参阅注册表。
如果您在创建表期间未在命名空间或表级指定明确的存储位置,系统会自动在目录的默认位置(从目录的基本 Cloud Storage 存储桶派生)下构建表的元数据和数据目录,方法是附加命名空间和表标识符。
准备工作
-
启用 BigLake API。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。 - 使用 Apache Iceberg REST 目录端点设置 Lakehouse 运行时目录。
所需的角色
如需获得创建表所需的权限,请让管理员向您授予项目和存储桶的以下 IAM 角色:
-
创建表格:
- BigLake Admin (
roles/biglake.admin) - 您的项目 - Storage Admin (
roles/storage.admin) - 目标 Cloud Storage 存储桶
- BigLake Admin (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
表格功能和支持
在 Lakehouse 运行时目录中使用表时,了解不同的表类型及其选择启用功能会很有帮助。如需详细了解如何使用 Apache Iceberg 表,请参阅 Apache Iceberg 表概览。
支持的 Iceberg 表
仅支持 Apache Iceberg V2(正式版)和 V3(预览版)表。不支持 Iceberg V1 表。如需升级现有的 V1 表,请参阅将 Iceberg V1 表升级到 V2。
使用表格选项(预览版)
您可以通过配置特定的表属性,选择使用 BigQuery 托管功能,例如 BigQuery 数据操纵语言 (DML) 和自动表管理。这些功能的启用方式因表格的创建位置而异:
- 从 BigQuery 迁移:默认启用 BigQuery DML 和自动表管理。
- 从开源引擎:如需选择启用,您必须明确配置表属性。如需了解详情,请参阅配置表格选项。
创建表
创建 Iceberg 表。
控制台
在 Google Cloud 控制台中,前往 Lakehouse。
选择现有目录,或者创建目录(如果您还没有目录)。
在菜单栏中,点击 + 创建表格。
在表格式部分,选择 Iceberg。
在表名称部分,输入具有唯一性的表名称。
可选:在属性部分中,配置表格属性。 系统会列出预定义的属性,例如
gcp.biglake.bigquery-dml.enabled和gcp.biglake.table-management.enabled。例如,您可以将这些值更改为
true,以启用 BigQuery DML 或自动表管理。如需了解详情,请参阅配置表格选项。点击创建。
您的表会显示在命名空间详情页面上。
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")
替换以下值:
NAMESPACE_NAME:您的命名空间的名称。TABLE_NAME:表的名称。
如需启用读/写互操作性和表管理(预览版),请将相应属性添加到 TBLPROPERTIES 子句中:
TBLPROPERTIES (
'gcp.biglake.bigquery-dml.enabled' = true,
'gcp.biglake.table-management.enabled' = true
)
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);
替换以下值:
SCHEMA_NAME:架构的名称。TABLE_NAME:表的名称。
如需启用读/写互操作性和表管理(预览版),请将以下属性添加到 WITH 子句:
WITH (
"gcp.biglake.bigquery-dml.enabled" = 'true',
"gcp.biglake.table-management.enabled" = 'true'
)
gcloud
如需使用 gcloud 创建表,请运行 gcloud biglake iceberg tables create 命令。
gcloud biglake iceberg tables create \ --project="PROJECT_ID" \ --catalog="CATALOG_ID" \ --namespace="NAMESPACE_NAME" \ --create-from-file="TABLE_DEFINITION_FILE"
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目 ID。CATALOG_ID:目录的 ID。NAMESPACE_NAME:目录命名空间的名称。TABLE_DEFINITION_FILE:包含 Iceberg 表定义的 JSON 文件的路径。
BigQuery
如需在 Lakehouse 运行时目录中通过 BigQuery 创建 Apache Iceberg 表,请使用以下 GoogleSQL CREATE TABLE 语句。从 BigQuery 创建表时,系统会默认启用 BigQuery DML 和自动表管理。
CREATE TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` (id int, data string);
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目 IDCATALOG_ID:您的 Lakehouse 运行时目录 IDNAMESPACE:您的 Iceberg 命名空间名称TABLE_NAME:Iceberg 表的名称
REST
如需使用 REST API 创建 Iceberg 表,请向 CreateIcebergTable 端点发出 POST 请求:
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables
请求正文必须包含有效的 Iceberg CreateTableRequest JSON 载荷,用于定义表架构、分区规范和初始属性。
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目 ID。CATALOG_ID:目录的 ID。NAMESPACE_NAME:目录命名空间的名称。