Esta página explica como usar a interface de administrador do Dataproc Metastore.
A interface do administrador oferece-lhe uma ferramenta centralizada para inspecionar e gerir os metadados armazenados no seu serviço Dataproc Metastore, tudo sem ter de se ligar a um cluster do Dataproc ou a uma instância do Hive. Em alternativa, pode gerir os seus metadados com a CLI do Google Cloud ou as APIs do Dataproc Metastore.
Por exemplo, através da interface do administrador, pode executar uma consulta SQL diretamente nos metadados de back-end para obter um nome de tabela específico. Este processo envolve
seguir menos passos do que o fluxo de trabalho típico, como criar um
cluster do Dataproc, estabelecer ligação ao cluster através de SSH, iniciar uma instância do Hive
e, finalmente, executar uma consulta (por exemplo, SELECT * FROM table_name
).
Como resultado, a interface do administrador pode ajudar a poupar tempo e a diminuir a quantidade de Google Cloud recursos necessários para obter os seus dados.
Antes de começar
- Ative o Dataproc Metastore no seu projeto.
- Crie um serviço de Metastore do Dataproc.
- Importe metadados para o Dataproc Metastore.
Funções necessárias
Para receber as autorizações de que precisa para usar a interface de administrador do Dataproc Metastore, peça ao seu administrador que lhe conceda as seguintes funções do IAM no seu projeto, com base no princípio do menor privilégio:
-
Para consultar metadados do Dataproc Metastore:
Administrador de consultas de metadados (
roles/metastore.metadataQueryAdmin
) na conta de utilizador ou na conta de serviço -
Para alterar a localização do recurso dos seus metadados, incluindo bases de dados, tabelas e partições, ou mover uma tabela para outra base de dados:
-
Administrador de mutação de metadados (
roles/metastore.metadataMutateAdmin
) na conta de utilizador ou na conta de serviço -
Editor de Metastore do Dataproc (
roles/metastore.editor
) na conta de utilizador ou na conta de serviço
-
Administrador de mutação de metadados (
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.
Estas funções predefinidas contêm as autorizações necessárias para usar a interface de administrador do Dataproc Metastore. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para usar a interface de administrador do Dataproc Metastore:
-
Para consultar metadados do Dataproc Metastore:
metastore.services.queryMetadata
-
Para alterar ou mover tabelas do Dataproc Metastore:
metastore.services.mutateMetadata
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Para mais informações acerca das funções e autorizações específicas do Dataproc Metastore, consulte o resumo da gestão de identidades e acessos do Dataproc Metastore.Operações de administrador suportadas
Só pode executar operações da interface de administrador através da CLI gcloud ou das APIs Dataproc Metastore. As operações da interface do administrador não são suportadas na Google Cloud consola.
A interface de administrador suporta as seguintes operações.
Operações só de leitura.
- Consultar metadados.
Operações de leitura e escrita.
- Alterar a localização dos recursos dos metadados, incluindo bases de dados, tabelas e partições.
- Alterar propriedades da tabela, como pares de chave-valor personalizados.
- Mover uma tabela para outra base de dados.
Se a interface de administrador não suportar uma operação diferente, pode consultar diretamente o metastore do Hive.
Por exemplo, para listar todas as tabelas numa instância do Dataproc Metastore,
pode consultar diretamente o esquema do metastore do Hive. Neste caso, pode executar o comando
select * from TBLS
para listar todas as tabelas armazenadas no seu serviço.
Consultar metadados
Esta operação permite-lhe procurar informações de metadados na sua base de dados através de consultas SQL. Depois de executar uma consulta, os resultados são transferidos para o seu contentor de artefactos Google Cloud .
Antes de executar esta operação, tenha em atenção as seguintes considerações:
- As operações suportadas incluem apenas consultas do
read-only
MySQL ou do Spanner. Se a consulta tentar modificar os dados, a operação falha. - O ficheiro de saída contém um máximo de 1000 linhas. Não é possível alterar esta configuração.
Os ficheiros de saída não são eliminados automaticamente. Em alternativa, tem de os eliminar manualmente do seu Google Cloud contentor. Se não os eliminar, pode incorrer em custos de armazenamento adicionais.
CLI gcloud
Para consultar metadados, execute o seguinte comando
gcloud metastore services query-metadata
:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Substitua o seguinte:
SERVICE
: o nome do seu serviço do Dataproc Metastore.LOCATION
: a região em que o seu serviço Dataproc Metastore reside. Google CloudQUERY
: a consulta SQL para segmentar os seus metadados.- Se estiver a usar uma base de dados do MySQL, use uma consulta normal do MySQL.
- Se estiver a usar uma base de dados do Spanner, use uma consulta GoogleSQL.
Veja o ficheiro de saída no contentor de artefactos Google Cloud .
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-X POST -d '{"query": "QUERY"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:queryMetadata
Substitua o seguinte:
QUERY
: a consulta SQL que está a usar para segmentar os seus metadados.- Se estiver a usar uma base de dados do MySQL, use uma consulta normal do MySQL.
- Se estiver a usar uma base de dados do Spanner, use uma consulta GoogleSQL.
PROJECT_ID
: o ID do projeto no qual o serviço Dataproc Metastore reside. Google CloudSERVICE
: o nome do serviço Dataproc Metastore.LOCATION
: a região onde o Dataproc Metastore reside.
O exemplo seguinte mostra um comando de exemplo que executa uma consulta select *
a partir de uma base de dados denominada DBS.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" -X POST -d '{"query": "select * from DBS;"}' \
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:queryMetadata
Interprete o resultado de uma operação de metadados de consulta
Quando executa um comando de metadados de consulta pela primeira vez, o Dataproc Metastore cria automaticamente uma Google Cloud pasta no seu contentor de artefactos Google Cloud .
Esta pasta chama-se query-results
. Após cada execução de consulta bem-sucedida (chamada API),
é criada uma nova pasta na pasta query-results
(que tem um UUID gerado aleatoriamente).
Cada nova pasta contém um ficheiro result manifest
com os resultados da sua consulta. A localização
desta pasta é devolvida na resposta da sua chamada API.
Por exemplo, na resposta, o campo resultManifestUri
contém a localização do ficheiro.
"response": {
"@type": "type.googleapis.com/google.cloud.metastore.QueryMetadataResponse",
"resultManifestUri": "gs://gcs-bucket-6a3638b8-e319-46363-ad33-e632a5e/query-results/800156f5-2d13-4b80-bec3-2345a9e880f6/result-manifest"
}
O resultado do ficheiro result manifest
é semelhante ao seguinte:
{
"status": {
"code": 0,
"message": "Query results are successfully uploaded to cloud storage",
"details": []
},
"filenames": ["result-001"]
}
Detalhes do ficheiro de manifesto do resultado:
- O campo
status
mostra se a consulta foi bem-sucedida ou falhou. - Se a execução da consulta for bem-sucedida, o campo
filenames
apresenta todos os ficheiros criados. Estes ficheiros estão na mesma pasta que o ficheiroresult manifest
. - Se a consulta resultar numa falha, o campo
details
mostra a mensagem de erro.
Altere a localização do recurso dos seus metadados
Esta operação permite-lhe alterar a localização do recurso de uma base de dados, uma tabela ou uma partição.
Quando executa este comando, apenas atualiza o diretório principal ou o recurso de metadados respetivo. Este comando não transfere dados existentes para a nova localização.
CLI gcloud
Para alterar a localização do recurso dos metadados, execute o seguinte comando
gcloud metastore services alter-metadata-resource-location
:gcloud metastore services alter-metadata-resource-location SERVICE \ --location=LOCATION \ --resource_name=RESOURCE_NAME \ --location_uri=LOCATION_URI
Substitua o seguinte:
SERVICE
: o nome do serviço Dataproc Metastore.LOCATION
: a região em que o seu serviço Dataproc Metastore reside. Google CloudRESOURCE_NAME
: o nome da base de dados, da tabela ou da partição que está a alterar.LOCATION_URI
: o novo caminho do Cloud Storage para o conteúdo deRESOURCE_NAME
. Este valor é o caminho para o qual está a mover a localização do recurso de metadados. Este caminho tem de começar comgs://
. Por exemplo,gs://bucket/object
.
Verifique se a alteração da localização do recurso foi bem-sucedida.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"resource_name": "RESOURCE_NAME", "location_uri":"LOCATION_URI"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterLocation
Substitua o seguinte:
PROJECT_ID
: o ID do projeto no qual o serviço Dataproc Metastore reside. Google CloudSERVICE
: o nome do seu serviço Dataproc Metastore.LOCATION
: a região onde reside o seu Dataproc Metastore.RESOURCE_NAME
: o nome da base de dados, da tabela ou da partição que está a alterar.LOCATION_URI
: o novo caminho do Cloud Storage para o conteúdo deRESOURCE_NAME
. Este valor é o caminho para o qual está a mover a localização do recurso de metadados. Este caminho tem de começar comgs://
. Por exemplo,gs://bucket/object
.
O exemplo seguinte mostra um comando de exemplo que move uma tabela denominada
test-table2
para um novo contentor do Cloud Storage.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST -d '{"resource_name": "databases/testdb1/tables/test-table2",
"location_uri":"gs://gcs-bucket-dpms1-9425bd83-b794-4f1c-9e79-2d833f758cc1/empty"}'
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:alterLocation
Altere as propriedades da tabela
Esta operação permite-lhe alterar as propriedades de uma tabela, como um par de chave-valor personalizado que está a usar para armazenar dados. Por exemplo, pode alterar um par de chave-valor de properties.customerID_1
para properties.customerID_2
.
CLI gcloud
Para alterar as propriedades de uma tabela, execute o seguinte comando
gcloud metastore services alter-table-properties
:gcloud metastore services alter-table-properties SERVICE \ --location=LOCATION \ --table-name=TABLE_NAME \ --update-mask=UPDATE_MASK \ --properties=PROPERTIES
Substitua o seguinte:
SERVICE
: o nome do seu serviço do Dataproc Metastore.LOCATION
: a região em que o seu serviço Dataproc Metastore reside. Google CloudTABLE_NAME
: o nome da tabela que contém as propriedades que está a alterar no seguinte formato:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: os valores das propriedades existentes que está a atualizar. Use uma lista separada por vírgulas para descrever os pares de chave-valor, por exemplo,properties.1,properties.2,properties.3,...
.PROPERTIES
: as novas propriedades da tabela. Use uma lista separada por vírgulas para descrever os pares chave-valor. Por exemplo,a=1,b=2,c=3,...
. Os valores que indicar aqui substituem os valores emUPDATE_MASK
.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "update_mask":"UPDATE_MASK", "properties":PROPERTIES}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterTableProperties
Substitua o seguinte:
SERVICE
: o nome do seu serviço do Dataproc Metastore.LOCATION
: a região em que o seu serviço Dataproc Metastore reside. Google CloudTABLE_NAME
: o nome da tabela que contém as propriedades que está a alterar no seguinte formato:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: os valores das propriedades existentes que está a atualizar. Use uma lista separada por vírgulas para descrever os pares de chave-valor, por exemplo,properties.1,properties.2,properties.3,...
.PROPERTIES
: as novas propriedades da tabela. Use uma lista separada por vírgulas para descrever os pares de chave-valor, por exemplo,a=1,b=2,c=3,...
. Os valores que indicar aqui substituem os valores emUPDATE_MASK
.
O exemplo seguinte mostra um comando de exemplo que altera as propriedades da tabela de uma tabela denominada test-table
. Neste exemplo, o par de chave-valor existente,
properties.customerID_1
é atualizado para o novo valor properties.customerID_2
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "databases/default/tables/test-table", "update_mask":{"paths":"properties.customerID_1"}, "properties":{"customerID_1":"customerID_2"}}' https://metastore.googleapis.com/projects/dpms-p
Mova uma tabela para outra base de dados
Esta operação permite-lhe mover uma tabela interna (tabela gerida) para outra base de dados. Neste caso, tanto o diretório principal da base de dados como os respetivos dados são movidos.
Não pode mover dados armazenados em tabelas externas.
CLI gcloud
Para mover uma tabela para outra base de dados, execute o seguinte comando
gcloud metastore services move-table-to-database
:gcloud metastore services move-table-to-database SERVICE \ --location=LOCATION \ --db_name=DB_NAME \ --table_name=TABLE_NAME \ --destination_db_name=DESTINATION_DB_NAME
Substitua o seguinte:
SERVICE
: o nome do seu serviço Dataproc Metastore.LOCATION
: a Google Cloud região em que o seu serviço Dataproc Metastore reside.DB_NAME
: o nome da base de dados de origem que contém a tabela que quer mover.TABLE_NAME
: o nome da tabela que quer mover.DESTINATION_DB_NAME
: o nome da nova base de dados para a qual quer mover a tabela.
Verifique se a alteração da tabela foi bem-sucedida.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "db_name": "DB_NAME", "destination_db_name": "DESTINATION_DB_NAME"}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:moveTableToDatabase
Substitua o seguinte:
PROJECT_ID
: o ID do projeto no qual reside o seu serviço do Dataproc Metastore. Google CloudSERVICE
: o nome do serviço Dataproc Metastore.LOCATION
: a região onde o Dataproc Metastore reside.DB_NAME
: o nome da base de dados de origem que contém a tabela que quer mover.TABLE_NAME
: o nome da tabela que quer mover.DESTINATION_DB_NAME
: o nome da nova base de dados para a qual quer mover a tabela.
O exemplo seguinte mostra um comando de exemplo que move uma base de dados denominada testdb1
para uma base de dados diferente denominada testdb2
.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "testtb1", "db_name": "testdb1",
"destination_db_name": "testdb2"}' https://metastore.googleapis.com/projects/dpms/locations/asia-northeast2/services/dpms1:moveTableToDatabase