Interfaccia amministratore di Dataproc Metastore

Questa pagina spiega come utilizzare l'interfaccia di amministrazione di Dataproc Metastore.

L'interfaccia amministratore ti offre uno strumento centralizzato per esaminare e gestire i metadati archiviati nel servizio Dataproc Metastore, il tutto senza dover connetterti a un cluster Dataproc o a un'istanza Hive. In alternativa, puoi gestire i metadati con Google Cloud CLI o le API Dataproc Metastore.

Ad esempio, utilizzando l'interfaccia di amministrazione, puoi eseguire una query SQL direttamente sui metadati di backend per recuperare un nome di tabella specifico. Questo processo prevede meno passaggi rispetto al flusso di lavoro tipico, ad esempio la creazione di un cluster Dataproc, la connessione al cluster utilizzando SSH, l'avvio di un'istanza Hive e infine l'esecuzione di una query (ad esempio SELECT * FROM table_name).

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

Prima di iniziare

Ruoli obbligatori

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

  • Per eseguire query sui metadati di Dataproc Metastore: Amministratore query metadati (roles/metastore.metadataQueryAdmin) sull'account utente o sul account di servizio
  • Per modificare la posizione della risorsa dei metadati, inclusi database, tabelle e partizioni, o spostare una tabella in un altro database:
    • Amministratore di modifica dei metadati (roles/metastore.metadataMutateAdmin) nell'account utente o nel account di servizio
    • Editor Dataproc Metastore (roles/metastore.editor) sull'account utente o sul account di servizio

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per utilizzare l'interfaccia di amministrazione di Dataproc Metastore. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

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

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

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più su ruoli e autorizzazioni specifici di Dataproc Metastore, consulta Panoramica di Identity and Access Management di Dataproc Metastore.

Operazioni dell'amministratore supportate

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

L'interfaccia amministratore supporta le seguenti operazioni.

  • Operazioni di sola lettura.

    • Esegui query sui metadati.
  • Operazioni di lettura e scrittura.

    • Modifica la posizione della risorsa dei metadati, inclusi database, tabelle e partizioni.
    • Modifica le proprietà della tabella, ad esempio le coppie chiave-valore personalizzate.
    • Sposta una tabella in un altro database.

Se l'interfaccia di amministrazione non supporta un'operazione diversa, puoi interrogare direttamente il metastore Hive. Ad esempio, per elencare tutte le tabelle in un'istanza Dataproc Metastore, puoi eseguire query direttamente sullo schema del metastore Hive. In questo caso, puoi eseguire select * from TBLS per elencare tutte le tabelle memorizzate nel servizio.

Query sui metadati

Questa operazione consente di cercare informazioni sui metadati nel database utilizzando query SQL. Dopo l'esecuzione di una query, i risultati vengono inseriti nel bucket artifacts Google Cloud .

Prima di eseguire questa operazione, tieni presente quanto segue:

  • Le operazioni supportate includono solo query read-only MySQL o Spanner. Se la query tenta di modificare i dati, l'operazione non va a buon fine.
  • Il file di output contiene un massimo di 1000 righe. Questa configurazione non può essere modificata.
  • I file di output non vengono eliminati automaticamente. Devi invece eliminarli manualmente dal bucket Google Cloud . Se non li elimini, potresti incorrere in costi aggiuntivi per lo spazio di archiviazione.

Interfaccia a riga di comando gcloud

  1. Per eseguire una 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 servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui si trova il servizio Dataproc Metastore.
    • QUERY: la query SQL per scegliere come target i metadati.
      • Se utilizzi un database MySQL, utilizza una normale query MySQL.
      • Se utilizzi un database Spanner, utilizza una query GoogleSQL.
  2. Visualizza il file di output nel bucket degli artefatti 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

Sostituisci quanto segue:

  • QUERY: la query SQL che utilizzi per scegliere come target i metadati.
    • Se utilizzi un database MySQL, utilizza una normale query MySQL.
    • Se utilizzi un database Spanner, utilizza una query GoogleSQL.
  • PROJECT_ID: l'ID progetto Google Cloud in cui risiede il servizio Dataproc Metastore.
  • SERVICE: il nome del servizio Dataproc Metastore.
  • LOCATION: la regione in cui si trova Dataproc Metastore.

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 una query

La prima volta che esegui un comando di metadati della query, Dataproc Metastore crea automaticamente una cartella Google Cloud nel bucket degli artefatti Google Cloud . Questa cartella si chiama query-results. Dopo ogni esecuzione riuscita della query (chiamata API), viene creata una nuova cartella all'interno della cartella query-results (che ha il nome di un UUID generato in modo casuale).

Ogni nuova cartella contiene un file result manifest con i risultati della query. La posizione di questa cartella viene restituita nella risposta della 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 indica se la query è stata eseguita correttamente o meno.
  • Se l'esecuzione della query ha esito positivo, il campo filenames elenca tutti i file creati. 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.

Modificare la posizione della risorsa dei metadati

Questa operazione consente di modificare la posizione della risorsa di un database, di una tabella o di una partizione.

Quando esegui questo comando, vengono aggiornati solo la directory principale o la risorsa di metadati corrispondente. Questo comando non trasferisce i dati esistenti nella nuova posizione.

Interfaccia a riga di comando gcloud

  1. Per modificare la posizione della risorsa dei metadati, esegui il seguente 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 del servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui si trova il servizio Dataproc Metastore.
    • RESOURCE_NAME: il nome del database, della tabella o della partizione che stai modificando.
    • LOCATION_URI: il nuovo percorso Cloud Storage per i contenuti di RESOURCE_NAME. Questo valore è il percorso in cui sposti la posizione della risorsa dei metadati. Questo percorso deve iniziare con gs://. Ad esempio: gs://bucket/object.
  2. Verifica che la modifica della località della risorsa sia stata eseguita correttamente.

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 in cui risiede il servizio Dataproc Metastore.
  • SERVICE: il nome del 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 Cloud Storage per i contenuti di RESOURCE_NAME. Questo valore è il percorso in cui sposti la posizione della risorsa dei 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

Modificare le proprietà della tabella

Questa operazione ti consente di modificare le proprietà di una tabella, ad esempio una coppia chiave-valore personalizzata che utilizzi 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 il seguente 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 servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui si trova il servizio Dataproc Metastore.
    • TABLE_NAME: il nome della tabella contenente le proprietà che stai modificando nel seguente formato: databases/{database_id}/tables/{table_id}.
    • UPDATE_MASK: i valori delle 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à della tabella. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore. Ad esempio, a=1,b=2,c=3,.... I valori che elenchi qui sovrascrivono i valori in 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 servizio Dataproc Metastore.
  • LOCATION: la regione Google Cloud in cui si trova il servizio Dataproc Metastore.
  • TABLE_NAME: il nome della tabella contenente le proprietà che stai modificando nel seguente formato: databases/{database_id}/tables/{table_id}.
  • UPDATE_MASK: i valori delle 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à della tabella. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore, ad esempio a=1,b=2,c=3,.... I valori che elenchi qui sovrascrivono i valori in UPDATE_MASK.

L'esempio seguente mostra un comando di esempio che modifica le proprietà della tabella di una tabella denominata test-table. In questo esempio, la coppia chiave-valore esistente properties.customerID_1 viene aggiornata 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

Spostare 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 il seguente 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 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 che vuoi spostare.
    • TABLE_NAME: il nome della tabella che vuoi spostare.
    • DESTINATION_DB_NAME: il nome del nuovo database in cui vuoi spostare la tabella.
  2. Verifica che la modifica della tabella sia stata eseguita correttamente.

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 in cui si trova il servizio Dataproc Metastore.
  • SERVICE: il nome del servizio Dataproc Metastore.
  • LOCATION: la regione in cui si trova Dataproc Metastore.
  • DB_NAME: il nome del database di origine che contiene la tabella che vuoi spostare.
  • TABLE_NAME: il nome della tabella che vuoi 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 database chiamato testdb1 in un altro database chiamato 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