Usar tabelas do BigLake para Apache Iceberg

As tabelas do BigLake para Apache Iceberg (doravante tabelas do BigLake Iceberg) são tabelas do Iceberg criadas com mecanismos de código aberto e armazenadas no Cloud Storage. Como todas as tabelas que usam o metastore do BigLake, elas podem ser lidas por mecanismos de código aberto e pelo BigQuery. No entanto, o mecanismo de código aberto que criou a tabela é o único que pode gravar nela.

Antes de começar

  1. Verify that billing is enabled for your Google Cloud project.

  2. Enable the BigLake API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Funções exigidas

Para receber as permissões necessárias para gerenciar tabelas Iceberg do BigLake, peça ao administrador que conceda a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Criar uma tabela do BigLake Iceberg

Spark

spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")

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

Substitua:

  • NAMESPACE_NAME: o nome do seu namespace.
  • TABLE_NAME: um nome para a tabela

Trino

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

DESCRIBE SCHEMA_NAME.TABLE_NAME;

Substitua:

  • SCHEMA_NAME: o nome do seu esquema
  • TABLE_NAME: um nome para a tabela

Listar tabelas

Spark

spark.sql("SHOW TABLES").show()

Trino

SHOW TABLES;

Inserir dados na tabela

O exemplo a seguir insere dados de amostra na tabela:

Spark

spark.sql("INSERT INTO TABLE_NAME VALUES (1, \"first row\"), (2, \"second row\"), (3, \"third row\");")

Trino

INSERT INTO TABLE_NAME VALUES (1, 'first row'), (2, 'second row'), (3, 'third row');

Consultar uma tabela

O exemplo a seguir seleciona todos os dados da tabela:

Spark

spark.sql("SELECT * FROM TABLE_NAME;").show()

Trino

SELECT * FROM TABLE_NAME;

BigQuery

Para consultar tabelas do BigLake Iceberg no BigQuery, use o nome de quatro partes na consulta com o seguinte formato: PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.

SELECT * FROM `PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;

Substitua:

  • PROJECT_NAME: o projeto proprietário do catálogo no BigLake Metastore. O projeto selecionado no console do Google Cloud será cobrado pela consulta.

  • BIGLAKE_CATALOG_ID: o ID do catálogo do metastore do BigLake especificado quando o catálogo foi criado. Esse identificador é usado como o nome do catálogo em consultas do BigQuery.

Importante

Esse identificador também é o nome do seu bucket do Cloud Storage.

Por exemplo, se você criou um bucket para armazenar seu catálogo e o nomeou como iceberg-bucket, tanto o nome do catálogo quanto o do bucket serão iceberg-bucket. Isso será usado mais tarde ao consultar seu catálogo no BigQuery usando a sintaxe P.C.N.T. Por exemplo: my-project.biglake_catalog_id.quickstart_namespace.quickstart_table

  • NAMESPACE_OR_SCHEMA_NAME: o namespace da tabela se você estiver usando o Spark ou o nome do esquema da tabela se estiver usando o Trino.
  • TABLE_NAME: o nome da tabela.

Alterar uma tabela

O exemplo a seguir adiciona uma coluna à tabela:

Spark

spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

Trino

ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;

Excluir uma tabela

Spark

spark.sql("DROP TABLE TABLE_NAME;")

Trino

DROP TABLE TABLE_NAME;

Preços

Para detalhes dos preços, consulte Preços do BigLake.

A seguir