查询表时,系统会使用 Lakehouse 运行时目录管理的元数据从底层 Cloud Storage 文件读取数据。
您可以使用四部分表命名方式,从 Spark 和 Trino 等开源引擎或直接从 BigQuery 执行 SELECT 查询。
准备工作
请参阅表格概览,了解不同类型的表格以及使用这些表格的影响。
-
启用 BigLake API。
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。
所需的角色
如需获得查询表所需的权限,请让管理员向您授予项目和存储桶的以下 IAM 角色:
-
在凭据自动售卖模式下读取表数据:BigLake Viewer (
roles/biglake.viewer) - 项目 -
在非凭证自动售卖模式下读取表数据:
- BigLake Viewer (
roles/biglake.viewer) - 项目 - Storage Object Viewer (
roles/storage.objectViewer) - Cloud Storage 存储桶
- BigLake Viewer (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
查询表
从表中选择所有数据:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
如需从 BigQuery 查询 Lakehouse Iceberg REST Catalog 表,请在查询中使用四部分表名称,格式如下:PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME。
SELECT * FROM `PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
替换以下值:
PROJECT_NAME:Lakehouse 运行时目录中目录所属的Google Cloud 项目。系统会向 Google Cloud 控制台中所选的 Google Cloud 项目收取查询费用。CATALOG_ID:创建目录时指定的 Lakehouse 运行时目录的 ID。此标识符用作 BigQuery 查询中的目录名称。此标识符也是 Cloud Storage 存储桶的名称。
例如,如果您创建了一个用于存储目录的存储桶,并将其命名为
iceberg-bucket,则目录名称和存储桶名称均为iceberg-bucket。稍后,当您使用 P.C.N.T 语法在 BigQuery 中查询目录时,系统会使用此值。例如my-project.biglake_catalog_id.quickstart_namespace.quickstart_table。NAMESPACE_OR_SCHEMA_NAME:如果使用 Spark,则为表命名空间;如果使用 Trino,则为表架构名称。TABLE_NAME:表格的名称。
后续步骤
- 了解如何更改表。