Interfaccia amministratore di Dataproc Metastore

Questa pagina spiega come utilizzare l'amministratore di Dataproc Metastore a riga di comando.

L'interfaccia di amministrazione mette a disposizione uno strumento centralizzato per esaminare per gestire i metadati archiviati nel servizio Dataproc Metastore, il tutto senza doverti connettere a un cluster Dataproc o a un'istanza Hive. Invece, puoi gestire i tuoi metadati con gcloud CLI o Dataproc Metastore su quelle di livello inferiore.

Ad esempio, utilizzando l'interfaccia di amministrazione, puoi eseguire una query SQL nei metadati di backend per recuperare il nome di una tabella specifica. Questo processo comporta seguire meno passaggi rispetto al flusso di lavoro tipico, come la creazione Cluster Dataproc, la connessione al cluster tramite SSH, l'avvio di un'istanza Hive e infine esegui una query (ad esempio, SELECT * FROM table_name).

Di conseguenza, l'interfaccia amministratore può aiutarti a risparmiare tempo e a diminuire la quantità di risorse Google Cloud necessarie per recuperare i tuoi dati.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per utilizzare l'interfaccia amministratore di Dataproc Metastore, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto, in base al principio del privilegio minimo:

  • Per eseguire una query sui metadati Dataproc Metastore: Amministratore query sui metadati (roles/metastore.metadataQueryAdmin) per l'account utente o l'account di servizio
  • Per modificare la località delle risorse dei metadati, inclusi database, tabelle e partizioni, o spostare una tabella in un altro database:
    • I metadati modificano l'amministratore (roles/metastore.metadataMutateAdmin) nell'account utente o nell'account di servizio
    • Editor Dataproc Metastore (roles/metastore.editor) nell'account utente o nell'account di servizio

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti le autorizzazioni necessarie per usare l'interfaccia amministratore di Dataproc Metastore. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per utilizzare l'interfaccia amministratore di Dataproc Metastore sono necessarie le seguenti autorizzazioni:

  • Per eseguire una query sui metadati Dataproc Metastore: metastore.services.queryMetadata
  • Per modificare o spostare le tabelle Dataproc Metastore: metastore.services.mutateMetadata

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.

Per ulteriori informazioni su ruoli e autorizzazioni specifici di Dataproc Metastore, consulta la panoramica su IAM di Dataproc Metastore.

Operazioni dell'amministratore supportate

Puoi eseguire operazioni nell'interfaccia di amministrazione solo utilizzando gcloud CLI le API Dataproc Metastore. Operazioni dell'interfaccia amministratore non sono supportati nella console Google Cloud.

L'interfaccia di amministrazione supporta le seguenti operazioni.

  • Operazioni di sola lettura.

    • Metadati delle query.
  • Operazioni di lettura e scrittura.

    • Modifica la località delle risorse dei metadati, inclusi database, tabelle e partizioni di architettura.
    • Modificare le proprietà della tabella, ad esempio coppie chiave-valore personalizzate.
    • Spostare una tabella in un altro database.

Metadati delle query

Questa operazione consente di cercare informazioni sui metadati nel database utilizzando query SQL. Dopo l'esecuzione di una query, i risultati il dumping nel tuo bucket Google Cloud degli artefatti.

Prima di eseguire questa operazione, tieni presente quanto segue:

  • Le operazioni supportate includono solo read-only query MySQL o Spanner. Se la query prova a la modifica dei dati, l'operazione non riesce.
  • Il file di output contiene al massimo 1000 righe. Questa configurazione non possono essere modificate.
  • I file di output non vengono eliminati automaticamente. Devi invece eliminare manualmente dal tuo bucket Google Cloud. Se non le elimini, potresti incorrere costi di archiviazione aggiuntivi.

Interfaccia a riga di comando gcloud

  1. Per eseguire query sui metadati, esegui questo comando gcloud metastore services query-metadata:

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

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo Servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui Il servizio Dataproc Metastore risiede in.
    • QUERY: la query SQL per la destinazione dei metadati.
      • Se utilizzi un database MySQL, usa una normale query MySQL.
      • Se usi un database Spanner, usa una query GoogleSQL.
  2. Visualizza il file di output nel tuo bucket Google Cloud degli artefatti.

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

Sostituisci quanto segue:

  • QUERY: la query SQL che stai utilizzando per il targeting dei metadati.
    • Se utilizzi un database MySQL, usa una normale query MySQL.
    • Se usi un database Spanner, usa una query GoogleSQL.
  • PROJECT_ID: l'ID progetto Google Cloud che stai Il servizio Dataproc Metastore risiede in.
  • SERVICE: il nome di Dataproc Metastore completamente gestito di Google Cloud.
  • LOCATION: la regione in cui Dataproc Metastore in cui risiede.

L'esempio seguente mostra un comando di esempio che esegue una query select * da un database denominato 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

Interpretare l'output di un'operazione sui metadati di query

Quando esegui per la prima volta un comando di metadati di query, Dataproc Metastore automaticamente crea una cartella Google Cloud nel bucket Google Cloud degli artefatti. Questa cartella è denominata query-results. Dopo ogni esecuzione di query (chiamata API) riuscita, viene creata una nuova cartella all'interno della cartella query-results (che è denominata con un UUID generato casualmente).

Ogni nuova cartella contiene un file result manifest con i risultati della query. La posizione di questa cartella viene restituito nella risposta alla chiamata API.

Ad esempio, nella risposta, il campo resultManifestUri contiene la posizione del file.

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

L'output del file result manifest è simile al seguente:

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

Dettagli del file manifest dei risultati:

  • Il campo status mostra se la query è riuscita o meno.
  • Se l'esecuzione della query ha esito positivo, il campo filenames elenca tutti i file è stato creato. Questi file si trovano nella stessa cartella del file result manifest.
  • Se la query ha generato un errore, il campo details mostra il messaggio di errore.

Modifica la località delle risorse dei metadati

Questa operazione consente di modificare la località delle risorse di un database, di una tabella della partizione di testo.

Quando esegui questo comando, aggiorna solo la directory superiore o le rispettive risorsa di metadati. Questo comando non trasferisce dati esistenti nuova posizione.

Interfaccia a riga di comando gcloud

  1. Per modificare la località delle risorse dei metadati, esegui questo comando: 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

    Sostituisci quanto segue:

    • SERVICE: il nome di Dataproc Metastore completamente gestito di Google Cloud.
    • LOCATION: la regione Google Cloud in cui Il servizio Dataproc Metastore risiede in.
    • RESOURCE_NAME: nome del database, della tabella o la partizione che stai modificando.
    • LOCATION_URI: il nuovo percorso di Cloud Storage per i contenuti di RESOURCE_NAME. Questo valore è il percorso in cui sposterai la località della risorsa di metadati. Questo percorso deve iniziare con gs://. Ad esempio: gs://bucket/object.
  2. Verifica che la modifica della località delle risorse sia riuscita.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto Google Cloud che stai Il servizio Dataproc Metastore risiede in.
  • SERVICE: il nome del tuo servizio Dataproc Metastore.
  • LOCATION: la regione in cui si trova Dataproc Metastore.
  • RESOURCE_NAME: il nome del database, della tabella o della partizione che stai modificando.
  • LOCATION_URI: il nuovo percorso di Cloud Storage per i contenuti di RESOURCE_NAME. Questo valore è il percorso in cui sposterai la località della risorsa di metadati. Questo percorso deve iniziare con gs://. Ad esempio: gs://bucket/object.

L'esempio seguente mostra un comando di esempio che sposta una tabella denominata test-table2 in un nuovo bucket 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

Modifica proprietà tabella

Questa operazione consente di modificare le proprietà di una tabella, come un la coppia chiave-valore utilizzata per archiviare i dati. Ad esempio, puoi modificare una coppia chiave-valore da properties.customerID_1 a properties.customerID_2.

Interfaccia a riga di comando gcloud

  1. Per modificare le proprietà di una tabella, esegui questo 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

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo Servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui Il servizio Dataproc Metastore risiede in.
    • TABLE_NAME: il nome della tabella contenente la che modifichi nel formato riportato di seguito, databases/{database_id}/tables/{table_id}.
    • UPDATE_MASK: i valori della proprietà esistente che stai aggiornando. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore, ad esempio: properties.1,properties.2,properties.3,....
    • PROPERTIES: le nuove proprietà per la tabella. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore. Ad esempio: a=1,b=2,c=3,.... I valori qui elencati sovrascrivono i valori a 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

Sostituisci quanto segue:

  • SERVICE: il nome del tuo Servizio Dataproc Metastore.
  • LOCATION: la regione Google Cloud in cui Il servizio Dataproc Metastore risiede in.
  • TABLE_NAME: il nome della tabella contenente la che modifichi nel formato riportato di seguito, databases/{database_id}/tables/{table_id}.
  • UPDATE_MASK: i valori della proprietà esistenti che stai aggiornando. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore, ad esempio: properties.1,properties.2,properties.3,....
  • PROPERTIES: le nuove proprietà per la tabella. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore, ad esempio: a=1,b=2,c=3,.... I valori qui elencati sovrascrivono quelli in UPDATE_MASK.

Nell'esempio seguente viene mostrato un comando che modifica le proprietà della tabella di una tabella chiamata test-table. In questo esempio, la coppia chiave-valore esistente properties.customerID_1 è stato aggiornato al nuovo valore 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

Sposta una tabella in un altro database

Questa operazione consente di spostare una tabella interna (tabella gestita) in un altro database. In questo caso, vengono spostati sia la directory principale del database sia i relativi dati.

Non puoi spostare i dati archiviati in tabelle esterne.

Interfaccia a riga di comando gcloud

  1. Per spostare una tabella in un altro database, esegui questo comando 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

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui si trova il servizio Dataproc Metastore.
    • DB_NAME: il nome del database di origine che contiene la tabella da spostare.
    • TABLE_NAME: il nome della tabella da spostare.
    • DESTINATION_DB_NAME: il nome del nuovo database in cui vuoi spostare la tabella.
  2. Verifica che la modifica alla tabella sia andata a buon fine.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto Google Cloud che il tuo Il servizio Dataproc Metastore risiede in.
  • SERVICE: il nome di Dataproc Metastore completamente gestito di Google Cloud.
  • LOCATION: la regione in cui Dataproc Metastore in cui risiede.
  • DB_NAME: il nome del database di origine che contiene la tabella che vuoi spostare.
  • TABLE_NAME: il nome della tabella da spostare.
  • DESTINATION_DB_NAME: il nome del nuovo database in cui vuoi spostare la tabella.

L'esempio seguente mostra un comando di esempio che sposta un oggetto basato su dati chiamato testdb1 a un altro database denominato 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

Passaggi successivi