创建表

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

支持的表格式

仅支持 Apache Iceberg V2 表;不支持 Iceberg V1 表。如果您有现有的 Iceberg V1 表,则必须先将其升级到 V2(例如,运行 ALTER TABLE catalog.schema.table SET TBLPROPERTIES ('format-version'='2'); 或使用类似的引擎操作),然后才能注册或使用它们。

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

除了查询引擎集成之外,Lakehouse 运行时目录还实现了开源 Iceberg REST 目录 API 规范 (POST /v1/{prefix}/namespaces/{namespace}/tables),允许兼容的 REST 客户端直接创建表。

准备工作

请参阅表概览,了解 不同类型的表以及使用这些表的影响。

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

  2. 启用 BigLake API。

    启用 API 所需的角色

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

    启用 API

所需的角色

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

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

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

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

创建表

创建 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;")

spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

替换以下值:

  • NAMESPACE_NAME:您的 命名空间
  • TABLE_NAME:表的名称。

Trino

CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);

DESCRIBE SCHEMA_NAME.TABLE_NAME;

替换以下值:

  • SCHEMA_NAME:您的架构的名称
  • TABLE_NAME:表的名称。

如果您将 BigQuery 目录联合与 Trino 结合使用,您 无法为表指定位置。系统始终使用架构的默认位置。

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

后续步骤