Faça a gestão de recursos no metastore do BigLake
O metastore do BigLake é um metastore único e partilhado que permite a partilha de dados entre motores de processamento de dados, eliminando a necessidade de manter metastores separados para as suas cargas de trabalho de código aberto.
Este documento explica como criar, ver, modificar e eliminar recursos no metastore do BigLake.
Antes de começar
-
Verify that billing is enabled for your Google Cloud project.
Saiba como verificar se a faturação está ativada num projeto. -
Enable the BigQuery, BigQuery Storage, and Dataproc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Opcional: compreenda como funciona o metastore do BigLake e por que motivo o deve usar.
Funções necessárias
Para receber as autorizações de que precisa para gerir recursos do Iceberg no metastore do BigLake, peça ao seu administrador que lhe conceda as seguintes funções de IAM no seu projeto:
-
Editor de dados do BigQuery (
roles/bigquery.dataEditor
) -
Administrador de objetos de armazenamento (
roles/storage.objectAdmin
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie recursos do metastore
As secções seguintes descrevem como criar recursos no metastore do BigLake.
Crie espaços de nomes
Selecione uma das seguintes opções:
API
Use o método
datasets.insert
e especifique o campo
ExternalCatalogDatasetOptions
no recurso dataset que
transmite.
{ "datasetReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID" }, "externalCatalogDatasetOptions": { "defaultStorageLocationUri": "URI", "parameters": { ... } }, "location": "LOCATION" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém o seu conjunto de dados de destinoDATASET_ID
: o ID do conjunto de dados de destinoURI
: o URI do Cloud Storage para todas as tabelas no conjunto de dadosLOCATION
: a localização do BigQuery onde quer criar o conjunto de dados
Spark SQL
CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu novo espaço de nomes
Terraform
provider "google" { project = "PROJECT_ID" } resource "google_bigquery_dataset" "default" { dataset_id = "DATASET_ID" location = "LOCATION" external_catalog_dataset_options { default_storage_location_uri = "URI" parameters = { ... } } }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém o seu conjunto de dados de destinoDATASET_ID
: o ID do conjunto de dados de destinoLOCATION
: a localização do BigQuery onde quer criar o conjunto de dadosURI
: o URI do Cloud Storage para todas as tabelas no conjunto de dados
Crie tabelas Iceberg
Selecione uma das seguintes opções:
API
Use o
método tables.insert
e especifique o
campo ExternalCatalogTableOptions
no recurso table que transmite.
{ "tableReference": { "projectId": "PROJECT_ID", "datasetId": "DATASET_ID", "tableId": "TABLE_ID" }, "externalCatalogTableOptions": { "parameters": { "table_type": "iceberg", "metadata_location": "METADATA_URI" }, "connection_id": "CONNECTION_ID" } }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém a tabela de destino.DATASET_ID
: o ID do conjunto de dados que contém a sua tabela de destino.TABLE_ID
: o ID da tabela de destino.METADATA_URI
: o URI do Cloud Storage do ficheiro de metadados Iceberg mais recente. Por exemplo,gs://mybucket/mytable/metadata/1234.metadata.json
.CONNECTION_ID
: o ID da sua ligação ao Cloud Storage.
Spark SQL
CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE (id bigint, data string) USING iceberg;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomesTABLE
: o nome da nova tabela
Terraform
resource "google_bigquery_table" "default" { deletion_protection = false dataset_id = google_bigquery_dataset.default.dataset_id table_id = "TABLE" external_catalog_table_options { storage_descriptor { location_uri = "STORAGE_URI" input_format = "org.apache.hadoop.mapred.FileInputFormat" output_format = "org.apache.hadoop.mapred.FileOutputFormat" } parameters = { "table_type" = "iceberg" "metadata_location" = "METADATA_URI" "write.parquet.compression-codec" : "zstd" "EXTERNAL" : "TRUE" } } }
Substitua o seguinte:
TABLE
: o nome da tabela de destino.STORAGE_URI
: o URI do Cloud Storage onde os dados da tabela estão armazenados, começando porgs://
.METADATA_URI
: o URI do Cloud Storage do ficheiro de metadados Iceberg mais recente. Por exemplo,gs://mybucket/mytable/metadata/1234.metadata.json
.
Veja recursos do metastore
As secções seguintes descrevem como ver recursos no metastore do BigLake.
Veja espaços de nomes
Selecione uma das seguintes opções:
API
Use o método
datasets.list
para ver todos os espaços de nomes ou use o método
datasets.get
para ver informações sobre um espaço de nomes definido.
Spark SQL
Para ver todos os espaços de nomes num catálogo, use a seguinte declaração:
SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;
Substitua SPARK_CATALOG
pelo nome do seu catálogo do Spark.
Para ver informações sobre um espaço de nomes definido, use a seguinte declaração:
DESCRIBE { DATABASE | NAMESPACE } [EXTENDED] SPARK_CATALOG.NAMESPACE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomes
Ver tabelas
Selecione uma das seguintes opções:
API
Use o método
tables.list
para ver todas as tabelas num espaço de nomes ou use o método
tables.get
para ver informações sobre uma tabela definida.
Spark SQL
Para ver todas as tabelas num espaço de nomes, use a seguinte declaração:
SHOW TABLES IN SPARK_CATALOG.NAMESPACE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomes
Para ver informações sobre uma tabela definida, use a seguinte declaração:
DESCRIBE TABLE [EXTENDED] SPARK_CATALOG.NAMESPACE.TABLE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomesTABLE
: o nome da tabela
Modifique recursos do metastore
As secções seguintes descrevem como modificar recursos no metastore do BigLake.
Atualize espaços de nomes
Selecione uma das seguintes opções:
API
Use o
método datasets.patch
e atualize o
campo ExternalCatalogDatasetOptions
no recurso dataset. O método
datasets.update
não é recomendado porque substitui todo o recurso do conjunto de dados.
Spark SQL
Use a declaração ALTER DATABASE
.
Atualize tabelas Iceberg
Selecione uma das seguintes opções:
API
Use o
método tables.patch
e atualize o
campo ExternalCatalogTableOptions
no recurso de tabela. O método tables.update
não é recomendado porque substitui todo o recurso de tabela.
Para atualizar o esquema ou o ficheiro de metadados, use o método tables.patch
e defina a propriedade autodetect_schema
como verdadeira:
PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém a tabela que quer atualizarDATASET_ID
: o ID do conjunto de dados que contém a tabela que quer atualizarTABLE_ID
: o ID da tabela que quer atualizar
No corpo do pedido, especifique o valor atualizado para cada campo. Por exemplo, para atualizar a localização dos metadados da tabela Iceberg, especifique o valor atualizado para o campo:metadata_location
{ "externalCatalogTableOptions": { "parameters": {"metadata_location": "METADATA_URI"} }, "schema": null }'
Substitua METADATA_URI
pelo
URI do Cloud Storage do
ficheiro de metadados Iceberg mais recente. Por exemplo,
gs://mybucket/mytable/metadata/1234.metadata.json
.
Spark SQL
Use a declaração ALTER TABLE
.
Elimine recursos do metastore
As secções seguintes descrevem como eliminar recursos no metastore do BigLake.
Elimine espaços de nomes
Selecione uma das seguintes opções:
API
Use o
datasets.delete
método.
Defina o parâmetro deleteContents
como verdadeiro para eliminar as tabelas no seu espaço de nomes.
Spark SQL
DROP NAMESPACE SPARK_CATALOG.NAMESPACE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomes
Elimine tabelas
Selecione uma das seguintes opções:
API
Use o
método tables.delete
e
especifique o nome da tabela. Este método não elimina os ficheiros associados no Cloud Storage.
Spark SQL
Para eliminar apenas a tabela, use a seguinte declaração:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomesTABLE
: o nome da tabela a eliminar
Para eliminar a tabela e os ficheiros associados no Cloud Storage, use a seguinte declaração:
DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;
Substitua o seguinte:
SPARK_CATALOG
: o nome do seu catálogo do SparkNAMESPACE
: o nome do seu espaço de nomesTABLE
: o nome da tabela a eliminar
O que se segue?
- Saiba mais sobre as funcionalidades adicionais do metastore do BigLake.