创建表

创建 Apache Iceberg 表会在 Lakehouse 运行时目录中的命名空间内注册表元数据。

如果您在创建表期间未在命名空间或表级指定明确的存储位置,系统会自动在目录的默认位置(源自目录的基础 Cloud Storage 存储桶)下构建表的元数据和数据目录,方法是附加命名空间和表标识符。

准备工作

  1. 验证是否已为您的 Google Cloud 项目启用结算功能。

  2. 启用 BigLake API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

  3. 使用 Apache Iceberg REST 目录端点设置 Lakehouse 运行时目录。

所需的角色

如需获得创建表所需的权限,请让管理员向您授予项目和存储桶的以下 IAM 角色:

  • 全部:
    • BigLake Admin (roles/biglake.admin) - 您的项目
    • Storage Admin (roles/storage.admin) - 目标 Cloud Storage 存储桶

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

表功能和支持

在 Lakehouse 运行时目录中使用表时,了解不同的表类型及其选择启用功能会很有帮助。如需详细了解如何专门使用 Apache Iceberg 表,请参阅 Apache Iceberg 表概览

支持的 Iceberg 表

仅支持 Apache Iceberg V2(正式版)和 V3(预览版)表。不支持 Iceberg V1 表。如需升级现有的 V1 表,请参阅将 Iceberg V1 表升级到 V2

使用表选项(预览版)

您可以通过配置特定的表属性,选择启用 BigQuery 托管功能,例如 BigQuery 数据操纵语言 (DML) 和自动表管理。这些功能的启用方式因表的创建位置而异:

  • 从 BigQuery: BigQuery DML 和自动表管理默认处于启用状态。
  • 从开源引擎: 如需选择启用,您必须明确配置表属性。如需了解详情,请参阅配置表 选项

创建表

创建 Iceberg 表。

控制台

  1. 在 Google Cloud 控制台中,前往 Lakehouse

    前往 Lakehouse

  2. 选择现有目录,或者在没有目录的情况下创建一个目录。

  3. 在菜单栏中,点击 + 创建表

  4. 对于表格式 ,选择 Iceberg

  5. 对于表名称,输入唯一的表名称。

  6. 点击创建

您的表会显示在命名空间详情 页面上。

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 项目 ID
  • CATALOG_ID:您的 Lakehouse 运行时目录 ID
  • NAMESPACE:您的 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:您的目录命名空间的名称。

后续步骤