Auf dieser Seite wird erläutert, wie Sie den Dataproc Metastore-Administrator verwenden .
Die Administratoroberfläche bietet Ihnen ein zentrales Tool, mit dem Sie die in Ihrem Dataproc Metastore-Dienst gespeicherten Metadaten prüfen und verwalten können, ohne eine Verbindung zu einem Dataproc-Cluster oder einer Hive-Instanz herstellen zu müssen. Stattdessen Sie können Metadaten mit der gcloud CLI oder Dataproc Metastore verwalten. APIs
Über die Administratoroberfläche können Sie beispielsweise eine SQL-Abfrage direkt auf Ihre Back-End-Metadaten ausführen, um einen bestimmten Tabellennamen abzurufen. Dieser Prozess umfasst
weniger Schritte ausführen als der typische Workflow, wie z. B.
Dataproc-Cluster, über SSH eine Verbindung zum Cluster herstellen, eine Hive-Instanz starten,
Anschließend führen Sie eine Abfrage aus (z. B. SELECT * FROM table_name
).
Daher kann Ihnen die Administratoroberfläche dabei helfen, Zeit zu sparen und die Menge der Google Cloud-Ressourcen, die zum Abrufen Ihrer Daten erforderlich sind.
Hinweise
- Aktivieren Sie Dataproc Metastore in Ihrem Projekt.
- Erstellen Sie einen Dataproc Metastore-Dienst.
- Metadaten in Dataproc Metastore importieren
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung der Dataproc Metastore-Administratoroberfläche benötigen. Dabei wird das Prinzip der geringsten Berechtigung angewendet:
-
So rufen Sie Dataproc Metastore-Metadaten ab:
Administrator von Metadatenabfragen (
roles/metastore.metadataQueryAdmin
) für das Nutzerkonto oder Dienstkonto -
So ändern Sie den Speicherort der Ressourcen Ihrer Metadaten, einschließlich Datenbanken, Tabellen und Partitionen, oder verschieben eine Tabelle in eine andere Datenbank:
-
Administrator für die Metadatenänderung (
roles/metastore.metadataMutateAdmin
) für das Nutzer- oder Dienstkonto -
Dataproc Metastore Editor (
roles/metastore.editor
) im Nutzerkonto oder Dienstkonto
-
Administrator für die Metadatenänderung (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Verwenden der Dataproc-Metastore-Benutzeroberfläche erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um die Dataproc Metastore-Administratoroberfläche zu verwenden:
-
So rufen Sie Dataproc Metastore-Metadaten ab:
metastore.services.queryMetadata
-
So ändern oder verschieben Sie Dataproc Metastore-Tabellen:
metastore.services.mutateMetadata
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu bestimmten Dataproc Metastore-Rollen und -Berechtigungen finden Sie in der Übersicht zu Dataproc Metastore IAM.Unterstützte Administratorvorgänge
Sie können Vorgänge auf der Administratoroberfläche nur mit der gcloud CLI oder die Dataproc Metastore APIs. Vorgänge über die Administratoroberfläche werden in der Google Cloud Console nicht unterstützt.
Die Administratoroberfläche unterstützt die folgenden Vorgänge.
Schreibgeschützte Vorgänge
- Abfragemetadaten.
Lese- und Schreibvorgänge.
- Ändern Sie den Speicherort der Metadaten, einschließlich Datenbanken, Tabellen und Partitionen.
- Tabelleneigenschaften ändern, z. B. benutzerdefinierte Schlüssel/Wert-Paare.
- Verschieben Sie eine Tabelle in eine andere Datenbank.
Abfragemetadaten
Mit diesem Vorgang können Sie Metadateninformationen in Ihrer Datenbank mithilfe von SQL-Abfragen abrufen. Nachdem Sie eine Abfrage ausgeführt haben, in Ihrem Google Cloud-Bucket für Artefakte abgelegt werden.
Beachten Sie die folgenden Hinweise, bevor Sie diesen Vorgang ausführen:
- Zu den unterstützten Vorgängen gehören nur
read-only
-MySQL- oder Spanner-Abfragen. Wenn in der Abfrage versucht wird, die Daten zu ändern, schlägt der Vorgang fehl. - Die Ausgabedatei enthält maximal 1.000 Zeilen. Diese Konfiguration kann nicht geändert werden.
Die Ausgabedateien werden nicht automatisch gelöscht. Stattdessen müssen Sie manuell aus Ihrem Google Cloud-Bucket. Wenn Sie sie nicht löschen, fallen möglicherweise zusätzliche Speicherkosten an.
gcloud-CLI
Führen Sie den folgenden
gcloud metastore services query-metadata
-Befehl aus, um Metadaten abzufragen:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Ersetzen Sie Folgendes:
SERVICE
: der Name Ihres Dataproc Metastore-DienstLOCATION
: die Google Cloud-Region, in der Ihr In dem sich der Dataproc Metastore-Dienst befindet.QUERY
: Die SQL-Abfrage, die auf Ihre Metadaten ausgerichtet ist.- Wenn Sie eine MySQL-Datenbank verwenden, verwenden Sie eine reguläre MySQL-Abfrage.
- Wenn Sie eine Spanner-Datenbank verwenden, verwenden Sie eine GoogleSQL-Abfrage.
Rufen Sie die Ausgabedatei in Ihrem Google Cloud-Bucket für Artefakte auf.
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
Ersetzen Sie Folgendes:
QUERY
: die SQL-Abfrage, die Sie für das Targeting Ihrer Metadaten verwenden.- Wenn Sie eine MySQL-Datenbank verwenden, verwenden Sie eine reguläre MySQL-Abfrage.
- Verwenden Sie eine GoogleSQL-Abfrage, wenn Sie eine Spanner-Datenbank verwenden.
PROJECT_ID
: die Google Cloud-Projekt-ID, die Sie verwenden In dem sich der Dataproc Metastore-Dienst befindet.SERVICE
: der Name Ihres Dataproc Metastore-Dienstes.LOCATION
: die Region, in der sich Ihr Dataproc Metastore befindet.
Das folgende Beispiel zeigt einen Beispielbefehl, der eine select *
-Abfrage aus einer Datenbank namens DBS ausführt.
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
Ausgabe eines Metadatenvorgangs für Abfragen interpretieren
Wenn Sie einen Metadaten-Abfragebefehl zum ersten Mal ausführen, wird Dataproc Metastore automatisch
erstellt einen Google Cloud-Ordner im Google Cloud-Bucket für Artefakte.
Dieser Ordner heißt query-results
. Nach jeder erfolgreichen Abfrageausführung (API-Aufruf)
wird im Ordner query-results
ein neuer Ordner erstellt (der mit dem
zufällig generierte UUID).
Jeder neue Ordner enthält eine result manifest
-Datei mit den Abfrageergebnissen. Der Speicherort dieses Ordners wird in der Antwort deines API-Aufrufs zurückgegeben.
In der Antwort enthält das Feld resultManifestUri
beispielsweise den Speicherort der Datei.
"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"
}
Die Ausgabe der result manifest
-Datei sieht in etwa so aus:
{
"status": {
"code": 0,
"message": "Query results are successfully uploaded to cloud storage",
"details": []
},
"filenames": ["result-001"]
}
Details zur Ergebnismanifestdatei:
- Das Feld
status
gibt an, ob die Abfrage erfolgreich war oder fehlgeschlagen ist. - Wenn die Abfrage erfolgreich ausgeführt wurde, werden im Feld
filenames
alle erstellten Dateien aufgeführt. Diese Dateien befinden sich im selben Ordner wie die Dateiresult manifest
. - Wenn die Abfrage zu einem Fehler führte, wird im Feld
details
die Fehlermeldung angezeigt.
Ressourcenstandort der Metadaten ändern
Mit diesem Vorgang können Sie den Ressourcenstandort einer Datenbank, Tabelle oder -Partition an.
Wenn Sie diesen Befehl ausführen, wird nur das übergeordnete Verzeichnis oder die entsprechende Metadatenressource aktualisiert. Mit diesem Befehl werden keine vorhandenen Daten neuen Speicherort.
gcloud-CLI
Führen Sie folgenden Befehl aus, um den Ressourcenstandort der Metadaten zu ändern:
gcloud metastore services alter-metadata-resource-location
-Befehl:gcloud metastore services alter-metadata-resource-location SERVICE \ --location=LOCATION \ --resource_name=RESOURCE_NAME \ --location_uri=LOCATION_URI
Ersetzen Sie Folgendes:
SERVICE
: der Name Ihres Dataproc Metastores Service.LOCATION
: die Google Cloud-Region, in der sich Ihr Dataproc Metastore-Dienst befindet.RESOURCE_NAME
: der Name der Datenbank, Tabelle oder eine Partition, die Sie ändern.LOCATION_URI
: Der neue Cloud Storage-Pfad für den Inhalt vonRESOURCE_NAME
. Dieser Wert ist der Pfad, in den Sie den Speicherort Ihrer Metadatenressource verschieben. Dieser Pfad muss mitgs://
beginnen. Beispiel:gs://bucket/object
Prüfen Sie, ob die Änderung des Ressourcenstandorts erfolgreich war.
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
Ersetzen Sie Folgendes:
PROJECT_ID
: die Google Cloud-Projekt-ID, in der sich der Dataproc Metastore-Dienst befindet.SERVICE
: der Name Ihres Dataproc Metastore-Dienstes.LOCATION
: die Region, in der sich Ihr Dataproc Metastore befindet.RESOURCE_NAME
: der Name der Datenbank, Tabelle oder Partition, die Sie ändern.LOCATION_URI
: Der neue Cloud Storage-Pfad für den Inhalt vonRESOURCE_NAME
. Dieser Wert ist der Pfad, in den Sie den Speicherort Ihrer Metadatenressource verschieben. Dieser Pfad muss mitgs://
beginnen. Beispiel:gs://bucket/object
Das folgende Beispiel zeigt einen Beispielbefehl, mit dem eine Tabelle namens
test-table2
in einen neuen Cloud Storage-Bucket.
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
Tabelleneigenschaften ändern
Mit diesem Vorgang können Sie die Eigenschaften einer Tabelle ändern, z. B. ein benutzerdefiniertes Schlüssel/Wert-Paar, das Sie zum Speichern von Daten verwenden. Sie können beispielsweise
ein Schlüssel/Wert-Paar von properties.customerID_1
bis properties.customerID_2
.
gcloud-CLI
Führen Sie den folgenden
gcloud metastore services alter-table-properties
-Befehl aus, um die Eigenschaften einer Tabelle zu ändern:gcloud metastore services alter-table-properties SERVICE \ --location=LOCATION \ --table-name=TABLE_NAME \ --update-mask=UPDATE_MASK \ --properties=PROPERTIES
Ersetzen Sie Folgendes:
SERVICE
: der Name Ihres Dataproc Metastore-DienstLOCATION
: die Google Cloud-Region, in der Ihr In dem sich der Dataproc Metastore-Dienst befindet.TABLE_NAME
: der Name der Tabelle mit den Eigenschaften, die Sie ändern möchten, im folgenden Format:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: die vorhandenen Property-Werte, die Sie aktualisieren. Verwenden Sie eine durch Kommas getrennte Liste, um die Schlüssel/Wert-Paare zu beschreiben, z. B.properties.1,properties.2,properties.3,...
.PROPERTIES
: die neuen Eigenschaften für Ihre Tabelle. Verwenden Sie eine durch Kommas getrennte Liste, um die Schlüssel/Wert-Paare zu beschreiben. Beispiel:a=1,b=2,c=3,...
Die hier aufgeführten Werte überschreiben die Werte 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
Ersetzen Sie Folgendes:
SERVICE
: der Name Ihres Dataproc Metastore-DienstLOCATION
: die Google Cloud-Region, in der Ihr In dem sich der Dataproc Metastore-Dienst befindet.TABLE_NAME
: der Name der Tabelle mit dem die Sie ändern, im folgenden Format:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: Die vorhandenen Attributwerte, die Sie aktualisieren. Verwenden Sie zur Beschreibung der Schlüssel/Wert-Paare eine durch Kommas getrennte Liste. Beispiel:properties.1,properties.2,properties.3,...
PROPERTIES
: die neuen Eigenschaften für Ihre Tabelle. Verwenden Sie eine durch Kommas getrennte Liste, um die Schlüssel/Wert-Paare zu beschreiben, z. B.a=1,b=2,c=3,...
. Die hier aufgeführten Werte überschreiben die Werte inUPDATE_MASK
.
Im folgenden Beispiel wird ein Befehl gezeigt, mit dem die Tabelleneigenschaften einer Tabelle namens test-table
geändert werden. In diesem Beispiel wird das vorhandene Schlüssel/Wert-Paar properties.customerID_1
auf den neuen Wert properties.customerID_2
aktualisiert.
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
Tabelle in eine andere Datenbank verschieben
Mit diesem Vorgang können Sie eine interne Tabelle (verwaltete Tabelle) in eine andere Datenbank verschieben. In diesem Fall werden sowohl das übergeordnete Verzeichnis der Datenbank als auch die zugehörigen Daten verschoben.
Sie können keine Daten verschieben, die in externen Tabellen gespeichert sind.
gcloud-CLI
Führen Sie den folgenden
gcloud metastore services move-table-to-database
-Befehl aus, um eine Tabelle in eine andere Datenbank zu verschieben:gcloud metastore services move-table-to-database SERVICE \ --location=LOCATION \ --db_name=DB_NAME \ --table_name=TABLE_NAME \ --destination_db_name=DESTINATION_DB_NAME
Ersetzen Sie Folgendes:
SERVICE
: der Name Ihres Dataproc Metastore-Dienstes.LOCATION
: die Google Cloud-Region, in der sich Ihr Dataproc Metastore-Dienst befindet.DB_NAME
: der Name der Quelldatenbank, die die zu verschiebende Tabelle enthält.TABLE_NAME
: Der Name der Tabelle, die Sie verschieben möchten.DESTINATION_DB_NAME
: der Name der neuen Datenbank, in die Sie die Tabelle verschieben möchten.
Prüfen Sie, ob die Tabellenänderung erfolgreich war.
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
Ersetzen Sie Folgendes:
PROJECT_ID
: die Google Cloud-Projekt-ID, die Ihr In dem sich der Dataproc Metastore-Dienst befindet.SERVICE
: der Name Ihres Dataproc Metastores Service.LOCATION
: die Region, in der sich Ihr Dataproc Metastore befindet.DB_NAME
: der Name der Quelldatenbank, die die Tabelle, die Sie verschieben möchten.TABLE_NAME
: der Name der Tabelle, die Sie verschieben möchten.DESTINATION_DB_NAME
: der Name der neuen Datenbank, in die Sie die Tabelle verschieben möchten.
Das folgende Beispiel zeigt einen Beispielbefehl, mit dem ein datenbasierter
Befehl mit der Bezeichnung
mit dem Namen testdb1
in eine andere Datenbank namens 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