Questa pagina spiega come utilizzare l'interfaccia di amministrazione di Dataproc Metastore.
L'interfaccia di amministrazione ti fornisce uno strumento centralizzato per esaminare e gestire i metadati archiviati nel servizio Dataproc Metastore, senza dover connetterti a un cluster Managed Service for Apache Spark o a un'istanza Hive. Puoi invece 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. Questa procedura prevede meno passaggi rispetto al flusso di lavoro tipico, ad esempio la creazione di un cluster Managed Service for Apache Spark, la connessione al cluster tramite SSH, l'avvio di un'istanza Hive e infine l'esecuzione di una query (ad esempio, SELECT * FROM table_name).
Di conseguenza, l'interfaccia di amministrazione può aiutarti a risparmiare tempo e a ridurre la quantità di Google Cloud risorse necessarie per recuperare i dati.
Prima di iniziare
- Abilita Dataproc Metastore nel tuo progetto.
- Crea un servizio Dataproc Metastore.
- Importa i metadati in Dataproc Metastore.
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 delle query sui metadati (
roles/metastore.metadataQueryAdmin) sull'account utente o sul account di servizio -
Per modificare la località delle risorse dei metadati, inclusi database, tabelle e partizioni, o spostare una tabella in un altro database:
- Amministratore delle mutazioni dei metadati (
roles/metastore.metadataMutateAdmin) sull'account utente o sul account di servizio - Editor di Dataproc Metastore (
roles/metastore.editor) sull'account utente o sul account di servizio
- Amministratore delle mutazioni dei metadati (
Per saperne di più 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 di amministrazione 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 di 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 la panoramica di Identity and Access Management di Dataproc Metastore.Operazioni di amministrazione supportate
Puoi eseguire le operazioni dell'interfaccia di amministrazione solo utilizzando gcloud CLI o le API Dataproc Metastore. Le operazioni dell'interfaccia di amministrazione non sono supportate nella Google Cloud console.
L'interfaccia di amministrazione supporta le seguenti operazioni.
Operazioni di sola lettura.
- Esegui query sui metadati.
Operazioni di lettura e scrittura.
- Modifica la località delle risorse 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
eseguire query direttamente sull'archivio metastore Hive.
Ad esempio, per elencare tutte le tabelle in un'istanza Dataproc Metastore, puoi eseguire query direttamente sullo schema dell'archivio metastore Hive. In questo caso, puoi eseguire select * from TBLS per elencare tutte le tabelle archiviate nel tuo servizio.
Esegui query sui metadati
Questa operazione ti consente di cercare informazioni sui metadati nel database utilizzando le query SQL. Dopo aver eseguito una query, i risultati vengono inseriti nel bucket Google Cloud degli artefatti.
Prima di eseguire questa operazione, tieni presente le seguenti considerazioni:
- Le operazioni supportate includono solo query MySQL o Spanner
read-only. Se la query tenta di modificare i dati, l'operazione non riesce. - 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 da l tuo Google Cloud bucket. Se non li elimini, potresti incorrere in costi di archiviazione aggiuntivi.
gcloud CLI
Per eseguire query sui metadati, esegui il seguente
gcloud metastore services query-metadatacomando:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Sostituisci quanto segue:
SERVICE: il nome del servizio Dataproc Metastore.LOCATION: la Google Cloud regione in cui risiede il servizio Dataproc Metastore.QUERY: la query SQL da indirizzare ai metadati.- Se utilizzi un database MySQL, utilizza una query MySQL normale.
- Se utilizzi un database Spanner, utilizza una query GoogleSQL.
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 utilizzi per indirizzare i metadati.- Se utilizzi un database MySQL, utilizza una query MySQL normale.
- Se utilizzi un database Spanner, utilizza una query GoogleSQL.
PROJECT_ID: l'ID progetto in cui risiede il servizio Dataproc Metastore. Google CloudSERVICE: il nome del servizio Dataproc Metastore.LOCATION: la regione in cui risiede 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
Interpreta l'output di un'operazione di query sui metadati
La prima volta che esegui un comando di query sui metadati, Dataproc Metastore crea automaticamente
una Google Cloud cartella nel bucket degli artefatti Google Cloud .
Questa cartella si chiama query-results. Dopo ogni esecuzione di query riuscita (chiamata API), viene creata una nuova cartella all'interno della cartella query-results (denominata con un UUID generato in modo casuale).
Ogni nuova cartella contiene un file result manifest con i risultati della query. La località di questa cartella viene restituita nella risposta della chiamata API.
Ad esempio, nella risposta, il campo resultManifestUri contiene la località 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
statusindica se la query è stata eseguita correttamente o meno. - Se l'esecuzione della query ha esito positivo, il campo
filenameselenca tutti i file creati. Questi file si trovano nella stessa cartella del fileresult manifest. - Se la query ha generato un errore, il campo
detailsmostra il messaggio di errore.
Modifica la località delle risorse dei metadati
Questa operazione ti consente di modificare la località delle risorse di un database, di una tabella o di una partizione.
Quando esegui questo comando, viene aggiornata solo la directory principale o la risorsa dei metadati corrispondente. Questo comando non trasferisce i dati esistenti nella nuova località.
gcloud CLI
Per modificare la località delle risorse dei metadati, esegui il seguente
gcloud metastore services alter-metadata-resource-locationcomando: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 Google Cloud regione in cui risiede 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 diRESOURCE_NAME. Questo valore è il percorso in cui stai spostando la località della risorsa dei metadati. Questo percorso deve iniziare congs://. Ad esempio,gs://bucket/object.
Verifica che la modifica della località delle risorse 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 in cui risiede il servizio Dataproc Metastore. Google CloudSERVICE: il nome del servizio Dataproc Metastore.LOCATION: la regione in cui risiede 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 diRESOURCE_NAME. Questo valore è il percorso in cui stai spostando la località della risorsa dei metadati. Questo percorso deve iniziare congs://. 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 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 di properties.customerID_1 in properties.customerID_2.
gcloud CLI
Per modificare le proprietà della tabella, esegui il seguente
gcloud metastore services alter-table-propertiescomando: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 Google Cloud regione in cui risiede 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 esempioproperties.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 elencati qui sovrascrivono i valori inUPDATE_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 Google Cloud regione in cui risiede 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 esempioproperties.1,properties.2,properties.3,....PROPERTIES: le nuove proprietà della tabella. Utilizza un elenco separato da virgole per descrivere le coppie chiave-valore, ad esempioa=1,b=2,c=3,.... I valori elencati qui sovrascrivono i valori inUPDATE_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
Sposta una tabella in un altro database
Questa operazione ti 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 nelle tabelle esterne.
gcloud CLI
Per spostare una tabella in un altro database, esegui il seguente
gcloud metastore services move-table-to-databasecomando: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 Google Cloud regione in cui risiede 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.
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 in cui risiede il servizio Dataproc Metastore. Google CloudSERVICE: il nome del servizio Dataproc Metastore.LOCATION: la regione in cui risiede 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 denominato testdb1 in 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