Questa pagina spiega come utilizzare l'interfaccia di amministrazione di Dataproc Metastore.
L'interfaccia amministratore fornisce uno strumento centralizzato per ispezionare e gestire i metadati archiviati nel servizio Dataproc Metastore, il tutto senza dover connettersi a un cluster Dataproc o a un'istanza Hive. Puoi invece gestire i metadati con le API gcloud CLI o Dataproc Metastore.
Ad esempio, utilizzando l'interfaccia amministratore, puoi eseguire una query SQL direttamente sui metadati di backend per recuperare il nome di una tabella specifica. Questa procedura prevede meno passaggi rispetto al flusso di lavoro tipico, ad esempio la creazione di un cluster Dataproc, 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 amministratore può aiutarti a risparmiare tempo e a ridurre la quantità di Google Cloud risorse necessarie per recuperare i dati.
Prima di iniziare
- Attiva 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 nel progetto, in base al principio del privilegio minimo:
-
Per eseguire query sui metadati di Dataproc Metastore:
Amministratore delle query sui metadati (
roles/metastore.metadataQueryAdmin
) nell'account utente o nell'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 nell'account di servizio -
Dataproc Metastore Editor (
roles/metastore.editor
) nell'account utente o nell'account di servizio
-
Amministratore di modifica dei metadati (
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per utilizzare l'interfaccia amministratore di Dataproc Metastore. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
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 ulteriori informazioni su ruoli e autorizzazioni specifici di Dataproc Metastore, consulta la panoramica di IAM di Dataproc Metastore.Operazioni dell'amministratore supportate
Puoi eseguire operazioni dell'interfaccia amministratore solo utilizzando gcloud CLI o le API Dataproc Metastore. Le operazioni dell'interfaccia di amministrazione 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.
- Modificare la posizione della risorsa dei metadati, inclusi database, tabelle e partizioni.
- Modifica le proprietà della tabella, ad esempio coppie chiave/valore personalizzate.
- Spostare una tabella in un altro database.
Query sui metadati
Questa operazione consente di cercare informazioni sui metadati nel database utilizzando query SQL. Dopo aver eseguito una query, i risultati vengono dumpati nel bucket Google Cloud degli elementi.
Prima di eseguire questa operazione, tieni presente le seguenti considerazioni:
- 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 al massimo 1000 righe. Questa configurazione non può essere modificata.
I file di output non vengono eliminati automaticamente. Dovrai invece eliminarli manualmente dal tuo Google Cloud bucket. Se non li elimini, potresti dover sostenere costi aggiuntivi per lo spazio di archiviazione.
Interfaccia a riga di comando gcloud
Per eseguire query sui metadati, esegui il seguente 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 Google Cloud regione in cui risiede 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.
Visualizza il file di output nel bucket Google Cloud degli elementi.
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 utilizzata 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 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 sui metadati della query
La prima volta che esegui un comando per i metadati delle query, Dataproc Metastore crea automaticamente una Google Cloud cartella nel bucket Google Cloud degli elementi.
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
(che viene denominata con 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 del risultato:
- Il campo
status
indica se la query è riuscita o meno. - Se l'esecuzione della query è andata a buon fine, il campo
filenames
elenca tutti i file creati. Questi file si trovano nella stessa cartella del fileresult manifest
. - Se la query non è andata a buon fine, 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, viene aggiornata solo la directory principale o la rispettiva risorsa di metadati. Questo comando non trasferisce i dati esistenti nella nuova posizione.
Interfaccia a riga di comando gcloud
Per modificare la posizione della risorsa dei metadati, esegui il seguente
gcloud metastore services alter-metadata-resource-location
comando: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 sposti la posizione della risorsa di metadati. Questo percorso deve iniziare congs://
. Ad esempio:gs://bucket/object
.
Verifica che la modifica della posizione della risorsa sia andata a buon fine.
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 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 diRESOURCE_NAME
. Questo valore è il percorso in cui sposti la posizione della risorsa di 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
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
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 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à 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 elencati qui sovrascrivono quelli 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 esistenti della proprietà 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à per la 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
Spostare 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.
Interfaccia a riga di comando gcloud
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 Google Cloud regione in cui si trova il servizio Dataproc Metastore.DB_NAME
: il nome del database di origine contenente 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.
Verifica che la modifica della 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' Google Cloud ID progetto in cui risiede il servizio Dataproc Metastore.SERVICE
: 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 da 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 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