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
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.
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:
-
Criar e excluir tabelas:
-
Administrador do BigLake (
roles/biglake.admin) no projeto -
Administrador do Storage (
roles/storage.admin) no bucket do Cloud Storage
-
Administrador do BigLake (
-
Ler dados da tabela no modo de venda de credenciais:
Leitor do BigLake (
roles/biglake.viewer) no projeto -
Gravar dados da tabela no modo de venda de credenciais:
Editor do BigLake (
roles/biglake.editor) no projeto -
Ler dados da tabela no modo sem fornecimento de credenciais:
-
Leitor do BigLake (
roles/biglake.viewer) no projeto -
Leitor de objetos do Storage (
roles/storage.objectViewer) no bucket do Cloud Storage
-
Leitor do BigLake (
-
Grave dados da tabela no modo sem fornecimento de credenciais:
-
Editor do BigLake (
roles/biglake.editor) no projeto -
Usuário de objetos do Storage (
roles/storage.objectUser) no bucket do Cloud Storage
-
Editor do BigLake (
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 esquemaTABLE_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
- Saiba mais sobre o catálogo REST do Iceberg.