Auf dieser Seite wird die Verwendung der Dataproc Metastore-Administratoroberfläche erläutert.
Die Administratoroberfläche bietet Ihnen ein zentrales Tool zum Prüfen und Verwalten der in Ihrem Dataproc Metastore-Dienst gespeicherten Metadaten, ohne dass Sie eine Verbindung zu einem Managed Service for Apache Spark-Cluster oder einer Hive-Instanz herstellen müssen. Stattdessen können Sie Ihre Metadaten mit der Google Cloud CLI oder den Dataproc Metastore APIs verwalten.
Mit der Administratoroberfläche können Sie beispielsweise eine SQL-Abfrage direkt für Ihre Backend-Metadaten ausführen, um einen bestimmten Tabellennamen abzurufen. Dieser Prozess umfasst weniger Schritte als der typische Workflow, z. B. das Erstellen eines Managed Service for Apache Spark-Clusters, das Herstellen einer Verbindung zum Cluster über SSH, das Starten einer Hive-Instanz und das anschließende Ausführen einer Abfrage (z. B. SELECT * FROM table_name).
Daher können Sie mit der Administratoroberfläche Zeit sparen und die Anzahl der Ressourcen reduzieren, die zum Abrufen Ihrer Daten erforderlich sind. Google Cloud
Hinweis
- Aktivieren Sie Dataproc Metastore in Ihrem Projekt.
- Erstellen Sie einen Dataproc Metastore-Dienst.
- Importieren Sie Metadaten in Dataproc Metastore.
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 gilt das Prinzip der geringsten Berechtigung:
-
Zum Abfragen von Dataproc Metastore-Metadaten:
Administrator für Metadatenabfragen (
roles/metastore.metadataQueryAdmin) für das Nutzerkonto oder Dienstkonto -
Zum Ändern des Speicherorts der Ressource Ihrer Metadaten, einschließlich Datenbanken, Tabellen und Partitionen, oder zum Verschieben einer Tabelle in eine andere Datenbank:
- Administrator für Metadatenänderungen (
roles/metastore.metadataMutateAdmin) für das Nutzerkonto oder Dienstkonto - Dataproc Metastore-Bearbeiter (
roles/metastore.editor) für das Nutzerkonto oder Dienstkonto
- Administrator für Metadatenänderungen (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zur Verwendung der Dataproc Metastore-Administratoroberfläche erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um die Dataproc Metastore-Administratoroberfläche zu verwenden:
-
Zum Abfragen von Dataproc Metastore-Metadaten:
metastore.services.queryMetadata -
Zum Ändern oder Verschieben von 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 unter Dataproc Metastore-Identity and Access Management Übersicht.Unterstützte Administratorvorgänge
Sie können Vorgänge der Administratoroberfläche nur mit der gcloud CLI oder den Dataproc Metastore APIs ausführen. Vorgänge der Administratoroberfläche werden in der Google Cloud Google Cloud Console nicht unterstützt.
Die Administratoroberfläche unterstützt die folgenden Vorgänge.
Schreibgeschützte Vorgänge
- Metadaten abfragen
Lese- und Schreibvorgänge
- Ändern Sie den Speicherort der Ressource Ihrer Metadaten, einschließlich Datenbanken, Tabellen und Partitionen.
- Ändern Sie Tabelleneigenschaften wie benutzerdefinierte Schlüssel/Wert-Paare.
- Verschieben Sie eine Tabelle in eine andere Datenbank.
Wenn die Administratoroberfläche einen anderen Vorgang nicht unterstützt, können Sie den Hive-Metastore direkt abfragen.
Wenn Sie beispielsweise alle Tabellen in einer Dataproc Metastore-Instanz auflisten möchten, können Sie das Hive-Metastore-Schema direkt abfragen. In diesem Fall können Sie select * from TBLS ausführen, um alle in Ihrem Dienst gespeicherten Tabellen aufzulisten.
Metadaten abfragen
Mit diesem Vorgang können Sie Metadateninformationen in Ihrer Datenbank mithilfe von SQL-Abfragen suchen. Nachdem Sie eine Abfrage ausgeführt haben, werden die Ergebnisse in Ihren Artefakt Google Cloud Bucket übertragen.
Beachten Sie vor dem Ausführen dieses Vorgangs Folgendes:
- Unterstützte Vorgänge umfassen nur
read-only-MySQL- oder Spanner-Abfragen. Wenn die Abfrage versucht, 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 sie manuell aus Ihrem Google Cloud Bucket löschen. Wenn Sie sie nicht löschen, können zusätzliche Speicherkosten anfallen.
gcloud CLI
Führen Sie den folgenden
gcloud metastore services query-metadataBefehl aus, um Metadaten abzufragen:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Ersetzen Sie Folgendes:
SERVICE: der Name Ihres Dataproc Metastore-Dienstes.LOCATION: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst befindet.QUERY: die SQL-Abfrage, mit der Sie Ihre Metadaten abfragen möchten.- Wenn Sie eine MySQL-Datenbank verwenden, verwenden Sie eine reguläre MySQL-Abfrage.
- Wenn Sie eine Spanner-Datenbank verwenden, verwenden Sie eine GoogleSQL-Abfrage.
Sehen Sie sich die Ausgabedatei in Ihrem Artefakt Google Cloud Bucket an.
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, mit der Sie Ihre Metadaten abfragen möchten.- Wenn Sie eine MySQL-Datenbank verwenden, verwenden Sie eine reguläre MySQL-Abfrage.
- Wenn Sie eine Spanner-Datenbank verwenden, verwenden Sie eine GoogleSQL-Abfrage.
PROJECT_ID: die Google Cloud Projekt-ID, in der sich Ihr 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 mit dem Namen 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 Vorgangs zum Abfragen von Metadaten interpretieren
Wenn Sie zum ersten Mal einen Befehl zum Abfragen von Metadaten ausführen, erstellt Dataproc Metastore automatisch
einen Google Cloud Ordner in Ihrem Artefakt Google Cloud Bucket.
Dieser Ordner hat den Namen query-results. Nach jeder erfolgreichen Abfrageausführung (API-Aufruf) wird ein neuer Ordner im Ordner query-results erstellt (der mit einer zufällig generierten UUID benannt ist).
Jeder neue Ordner enthält eine result manifest-Datei mit Ihren Abfrageergebnissen. Der Speicherort dieses Ordners wird in der Antwort Ihres 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 Datei result manifest sieht in etwa so aus:
{
"status": {
"code": 0,
"message": "Query results are successfully uploaded to cloud storage",
"details": []
},
"filenames": ["result-001"]
}
Details zur Manifestdatei „result manifest“:
- Das Feld
statusgibt an, ob die Abfrage erfolgreich war oder nicht. - Wenn die Abfrageausführung erfolgreich ist, werden im Feld
filenamesalle erstellten Dateien aufgeführt. Diese Dateien befinden sich im selben Ordner wie die Dateiresult manifest. - Wenn die Abfrage zu einem Fehler geführt hat, wird die Fehlermeldung im Feld
detailsangezeigt.
Speicherort der Ressource Ihrer Metadaten ändern
Mit diesem Vorgang können Sie den Speicherort der Ressource einer Datenbank, Tabelle oder Partition ändern.
Wenn Sie diesen Befehl ausführen, wird nur das übergeordnete Verzeichnis oder die entsprechende Metadatenressource aktualisiert. Mit diesem Befehl werden keine vorhandenen Daten an den neuen Speicherort übertragen.
gcloud CLI
Führen Sie den folgenden
gcloud metastore services alter-metadata-resource-locationBefehl aus, um den Speicherort der Ressource von Metadaten zu ändern: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 Metastore-Dienstes.LOCATION: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst 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, zu dem Sie den Speicherort der Metadatenressource verschieben. Dieser Pfad muss mitgs://beginnen. Beispiel:gs://bucket/object.
Prüfen Sie, ob die Änderung des Speicherorts der Ressource 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 Ihr 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, zu dem Sie den Speicherort der Metadatenressource verschieben. Dieser Pfad muss mitgs://beginnen. Beispiel:gs://bucket/object.
Das folgende Beispiel zeigt einen Beispielbefehl, mit dem eine Tabelle mit dem Namen test-table2 in einen neuen Cloud Storage-Bucket verschoben wird.
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, mit dem Sie Daten speichern. Sie können beispielsweise ein Schlüssel/Wert-Paar von properties.customerID_1 in properties.customerID_2 ändern.
gcloud CLI
Führen Sie den folgenden
gcloud metastore services alter-table-propertiesBefehl aus, um Tabelleneigenschaften 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-Dienstes.LOCATION: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst befindet.TABLE_NAME: der Name der Tabelle, die die zu ändernden Eigenschaften enthält, im folgenden Format:databases/{database_id}/tables/{table_id}.UPDATE_MASK: die vorhandenen Eigenschaftswerte, 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-Dienstes.LOCATION: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst befindet.TABLE_NAME: der Name der Tabelle, die die zu ändernden Eigenschaften enthält, im folgenden Format:databases/{database_id}/tables/{table_id}.UPDATE_MASK: die vorhandenen Eigenschaftswerte, 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, z. B.a=1,b=2,c=3,.... Die hier aufgeführten Werte überschreiben die Werte inUPDATE_MASK.
Das folgende Beispiel zeigt einen Beispielbefehl, mit dem die Tabelleneigenschaften einer Tabelle mit dem Namen 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.
Daten, die in externen Tabellen gespeichert sind, können nicht verschoben werden.
gcloud CLI
Führen Sie den folgenden
gcloud metastore services move-table-to-databaseBefehl 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 Tabelle enthält, 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.
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, in der sich Ihr Dataproc Metastore-Dienst befindet.SERVICE: der Name Ihres Dataproc Metastore-Dienstes.LOCATION: die Region, in der sich Ihr Dataproc Metastore befindet.DB_NAME: der Name der Quelldatenbank, die die Tabelle enthält, 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 eine Datenbank mit dem Namen testdb1 in eine andere Datenbank mit dem Namen testdb2 verschoben wird.
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