创建 Apache Iceberg 表会在 Lakehouse 运行时目录中的命名空间内注册表元数据。
如果您在创建表时未在命名空间或表级指定明确的存储位置,系统会自动在目录的默认位置(从目录的基本 Cloud Storage 存储桶派生)下构建表的元数据和数据目录,方法是附加命名空间和表标识符。
除了查询引擎集成之外,Lakehouse 运行时目录还实现了开源 Iceberg REST Catalog API 规范 (POST /v1/{prefix}/namespaces/{namespace}/tables),从而允许兼容的 REST 客户端直接创建表。
准备工作
请参阅表格概览,了解不同类型的表格以及使用这些表格的影响。
-
启用 BigLake API。
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。
所需的角色
如需获得创建表所需的权限,请让管理员向您授予项目和存储桶的以下 IAM 角色:
- 全部:
- BigLake Admin (
roles/biglake.admin) - 您的项目 - Storage Admin (
roles/storage.admin) - 目标 Cloud Storage 存储桶
- BigLake Admin (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建表
创建 Iceberg 表。
控制台
在 Google Cloud 控制台中,前往 Lakehouse。
选择现有目录,或者创建目录(如果您还没有目录)。
在菜单栏中,点击 +创建表格。
在表格式部分,选择 Iceberg。
在表名称部分,输入具有唯一性的表名称。
点击创建。
您的表会显示在命名空间详情页面上。
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:目录命名空间的名称。