Interface do administrador do Dataproc Metastore

Nesta página, explicamos como usar o administrador do metastore do Dataproc interface gráfica do usuário.

A interface do administrador oferece uma ferramenta centralizada para inspecionar e gerenciar os metadados armazenados no serviço Metastore do Dataproc; sem precisar se conectar a um cluster do Dataproc ou a uma instância do Hive. Em vez disso, é possível gerenciar seus metadados com a CLI gcloud ou o metastore do Dataproc APIs de terceiros.

Por exemplo, na interface do administrador, é possível executar uma consulta SQL diretamente nos metadados de back-end para buscar um nome de tabela específico. Esse processo envolve seguindo menos etapas do que o fluxo de trabalho comum, como criar cluster do Dataproc, conectando-se ao cluster usando SSH, iniciando uma instância do Hive, Por fim, execute uma consulta (por exemplo, SELECT * FROM table_name).

Como resultado, a interface do administrador pode ajudá-lo a economizar tempo e a diminuir a quantidade de recursos do Google Cloud necessários para recuperar os dados.

Antes de começar

Funções exigidas

Para ter as permissões necessárias para usar a interface de administrador do metastore do Dataproc, peça ao administrador para conceder a você papéis do IAM a seguir no projeto, com base no princípio de privilégio mínimo:

  • Para consultar metadados do Dataproc Metastore: Administrador de consulta de metadados (roles/metastore.metadataQueryAdmin) na conta de usuário ou de serviço
  • Para alterar o local de recursos dos seus metadados, incluindo bancos de dados, tabelas e partições, ou mover uma tabela para outro banco de dados:
    • Administrador de mutação de metadados (roles/metastore.metadataMutateAdmin) na conta de usuário ou de serviço
    • Editor do metastore do Dataproc (roles/metastore.editor) na conta de usuário ou de serviço

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esses papéis predefinidos têm as permissões necessárias para usar a interface do administrador do metastore do Dataproc. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para usar a interface do administrador do metastore do Dataproc:

  • Para consultar metadados do Dataproc Metastore: metastore.services.queryMetadata
  • Para alterar ou mover tabelas do metastore do Dataproc: metastore.services.mutateMetadata

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para mais informações sobre papéis e permissões específicos do metastore do Dataproc, consulte Visão geral do IAM do metastore do Dataproc.

Operações de administrador compatíveis

Só é possível executar operações da interface do administrador com a CLI gcloud ou as APIs Dataproc Metastore. Operações da interface do administrador não têm suporte no console do Google Cloud.

A interface do administrador é compatível com as operações a seguir.

  • Operações somente leitura.

    • Metadados de consulta.
    .
  • Operações de leitura e gravação.

    • Alterar o local de recursos dos metadados, incluindo bancos de dados, tabelas e partições.
    • Alterar as propriedades da tabela, como pares de chave-valor personalizados.
    • Mover uma tabela para outro banco de dados.

Metadados de consulta

Esta operação permite procurar informações de metadados no seu banco de dados usando consultas SQL. Depois que você executa uma consulta, os resultados são despejados no seu bucket de artefatos do Google Cloud.

Antes de executar essa operação, observe as seguintes considerações:

  • As operações aceitas incluem apenas consultas read-only MySQL ou Spanner. Se a consulta tentar modificar os dados, a operação falhará.
  • O arquivo de saída contém um máximo de 1.000 linhas. Essa configuração não podem ser alteradas.
  • Os arquivos de saída não são excluídos automaticamente. Em vez disso, exclua manualmente do bucket do Google Cloud. Se você não os excluir, poderá haver custos extras de armazenamento.

CLI da gcloud

  1. Para consultar metadados, execute o seguinte comando gcloud metastore services query-metadata:

    gcloud metastore services query-metadata SERVICE \
      --location=LOCATION \
      --query=QUERY

    Substitua:

    • SERVICE: o nome do serviço Metastore do Dataproc.
    • LOCATION: a região do Google Cloud em que seu serviço do Dataproc Metastore.
    • QUERY: a consulta SQL para direcionar os metadados.
      • Caso esteja usando um banco de dados MySQL, use uma consulta MySQL normal.
      • Se você estiver usando um banco de dados do Spanner, use uma consulta GoogleSQL.
  2. Confira o arquivo de saída no bucket de artefatos do 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:

  • QUERY: a consulta SQL que você está usando para direcionar os metadados.
    • Caso esteja usando um banco de dados MySQL, use uma consulta MySQL normal.
    • Se você estiver usando um banco de dados do Spanner, use uma consulta GoogleSQL.
  • PROJECT_ID: o ID do projeto do Google Cloud que você está serviço do Dataproc Metastore.
  • SERVICE: o nome do metastore do Dataproc. serviço.
  • LOCATION: a região em que seu metastore do Dataproc está localizado.

No exemplo a seguir, mostramos um comando de amostra que executa uma consulta select * em um banco de dados chamado 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

Interpretar a saída de uma operação de metadados de consulta

Quando você executa um comando de metadados de consulta pela primeira vez, o metastore do Dataproc automaticamente cria uma pasta do Google Cloud no bucket de artefatos do Google Cloud. O nome da pasta é query-results. Após cada execução de consulta (chamada de API), Uma nova pasta será criada dentro da pasta query-results (nomeada com o UUID gerado aleatoriamente).

Cada nova pasta contém um arquivo result manifest com os resultados da consulta. O local desta pasta será retornado na resposta da sua chamada de API.

Por exemplo, na resposta, o campo resultManifestUri contém o local do arquivo.

"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"
  }

A saída do arquivo result manifest será semelhante a esta:

{
  "status": {
    "code": 0,
    "message": "Query results are successfully uploaded to cloud storage",
    "details": []
  },
  "filenames": ["result-001"]
}

Detalhes do arquivo de manifesto de resultados:

  • O campo status mostra se a consulta foi bem-sucedida ou não.
  • Se a execução da consulta for bem-sucedida, o campo filenames listará todos os arquivos criados. Esses arquivos estão na mesma pasta que o arquivo result manifest.
  • Se a consulta falhar, o campo details vai mostrar a mensagem de erro.
.

Alterar o local do recurso dos seus metadados

Essa operação permite alterar o local do recurso de um banco de dados, tabela ou partição.

Quando executado, o comando atualiza apenas o diretório pai ou o respectivo diretório recurso de metadados. Esse comando não transfere nenhum dado atual para o novo local.

CLI da gcloud

  1. Para mudar o local 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:

    • SERVICE: o nome do metastore do Dataproc. serviço.
    • LOCATION: a região do Google Cloud em que seu serviço do Dataproc Metastore.
    • RESOURCE_NAME: o nome do banco de dados, tabela, ou partição que você está alterando.
    • LOCATION_URI: o novo caminho do Cloud Storage para o conteúdo de RESOURCE_NAME. Esse valor é o caminho para onde você está movendo o local do recurso de metadados. Esse caminho precisa começar com gs://. Por exemplo, gs://bucket/object.
  2. Verifique se a alteração do local 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:

  • PROJECT_ID: o ID do projeto do Google Cloud que você está serviço do Dataproc Metastore.
  • SERVICE: o nome do serviço do metastore do Dataproc.
  • LOCATION: a região em que o metastore do Dataproc reside.
  • RESOURCE_NAME: o nome do banco de dados, da tabela ou da partição que você está alterando.
  • LOCATION_URI: o novo caminho do Cloud Storage para o conteúdo de RESOURCE_NAME. Esse valor é o caminho para onde você está movendo o local do recurso de metadados. Esse caminho precisa começar com gs://. Por exemplo, gs://bucket/object.

O exemplo a seguir mostra um comando de amostra que move uma tabela chamada test-table2 para um novo bucket 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

Alterar propriedades da tabela

Essa operação permite alterar as propriedades de uma tabela, como uma tabela par de chave-valor usado para armazenar dados. Por exemplo, é possível alterar um par de chave-valor de properties.customerID_1 a properties.customerID_2.

CLI da gcloud

  1. Para mudar 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:

    • SERVICE: o nome do serviço Metastore do Dataproc.
    • LOCATION: a região do Google Cloud em que seu serviço do Dataproc Metastore.
    • TABLE_NAME: o nome da tabela que contém o propriedades que você está alterando no formato a seguir, databases/{database_id}/tables/{table_id}.
    • UPDATE_MASK: os valores de propriedade que você está atualizando. 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 listados aqui substituem os valores em UPDATE_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:

  • SERVICE: o nome do serviço Metastore do Dataproc.
  • LOCATION: a região do Google Cloud em que seu serviço do Dataproc Metastore.
  • TABLE_NAME: o nome da tabela que contém o propriedades que você está alterando no formato a seguir, databases/{database_id}/tables/{table_id}.
  • UPDATE_MASK: os valores de propriedade atuais que você está atualizando. 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 listados aqui substituem os valores no UPDATE_MASK:

O exemplo a seguir mostra um exemplo de comando que altera as propriedades da tabela de uma tabela chamada test-table. Neste exemplo, o par de chave-valor atual, properties.customerID_1 foi 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

Mover uma tabela para outro banco de dados

Esta operação permite mover uma tabela interna (tabela gerenciada) para outro banco de dados. Nesse caso, o diretório pai do banco de dados e os dados são movidos.

Não é possível mover dados armazenados em tabelas externas.

CLI da gcloud

  1. Para mover uma tabela para outro banco 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:

    • SERVICE: o nome do serviço do metastore do Dataproc.
    • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.
    • DB_NAME: o nome do banco de dados de origem que contém a tabela que você quer mover.
    • TABLE_NAME: o nome da tabela que você quer mover.
    • DESTINATION_DB_NAME: o nome do novo banco de dados para onde você quer mover a tabela.
  2. 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:

  • PROJECT_ID: o ID do projeto do Google Cloud que seu serviço do Dataproc Metastore.
  • SERVICE: o nome do metastore do Dataproc. serviço.
  • LOCATION: a região em que seu metastore do Dataproc está localizado.
  • DB_NAME: o nome do banco de dados de origem que contém a tabela que você quer mover.
  • TABLE_NAME: o nome da tabela que você quer mover.
  • DESTINATION_DB_NAME: o nome do novo banco de dados. para onde você quer mover a tabela.

O exemplo a seguir mostra um comando de amostra que move um objeto baseado em dados chamado chamou testdb1 para um banco de dados diferente chamado 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

A seguir