Auf dieser Seite wird beschrieben, wie Sie die Dataproc Metastore-Administratorschnittstelle verwenden.
Die Administratoroberfläche bietet Ihnen ein zentrales Tool zum Prüfen und Verwalten der Metadaten, die in Ihrem Dataproc Metastore-Dienst gespeichert sind. Sie müssen sich dazu nicht mit einem Dataproc-Cluster oder einer Hive-Instanz verbinden. Stattdessen können Sie Ihre Metadaten mit der Google Cloud CLI oder den Dataproc Metastore APIs verwalten.
Über die Administratorschnittstelle 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, bei dem Sie beispielsweise einen Dataproc-Cluster erstellen, über SSH eine Verbindung zum Cluster herstellen, eine Hive-Instanz starten und dann eine Abfrage (z. B. SELECT * FROM table_name
) ausführen.
So können Sie mit der Administratorschnittstelle Zeit sparen und die Anzahl der Google Cloud Ressourcen verringern, die zum Abrufen Ihrer Daten erforderlich sind.
Hinweise
- Aktivieren Sie Dataproc Metastore in Ihrem Projekt.
- Dataproc Metastore-Dienst erstellen
- 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-Administratorschnittstelle benötigen. Dabei gilt das Prinzip der geringsten Berechtigung:
-
So fragen Sie Dataproc Metastore-Metadaten ab:
Administrator von Metadatenabfragen (
roles/metastore.metadataQueryAdmin
) für das Nutzerkonto oder Dienstkonto -
So ändern Sie den Ressourcenpfad Ihrer Metadaten, einschließlich Datenbanken, Tabellen und Partitionen, oder verschieben eine Tabelle in eine andere Datenbank:
-
Rolle „Metadata mutate administrator“ (
roles/metastore.metadataMutateAdmin
) für das Nutzerkonto oder Dienstkonto -
Die Rolle „Dataproc Metastore Editor“ (
roles/metastore.editor
) für das Nutzerkonto oder Dienstkonto
-
Rolle „Metadata mutate administrator“ (
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-Administratorschnittstelle erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um die Dataproc Metastore-Administratorschnittstelle zu verwenden:
-
So fragen 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 unter Dataproc Metastore-Identity and Access ManagementIAM.Unterstützte Verwaltungsvorgänge
Sie können Vorgänge der Administratoroberfläche nur über die gcloud CLI oder die Dataproc Metastore APIs ausführen. Vorgänge der Administratorschnittstelle werden in der Google Cloud -Konsole nicht unterstützt.
Die Administratorschnittstelle unterstützt die folgenden Vorgänge.
Schreibgeschützte Vorgänge:
- Metadaten abfragen.
Lese- und Schreibvorgänge:
- Ändern Sie den Ressourcenstandort Ihrer Metadaten, einschließlich Datenbanken, Tabellen und Partitionen.
- Tabelleneigenschaften ändern, z. B. benutzerdefinierte Schlüssel/Wert-Paare.
- Tabelle in eine andere Datenbank verschieben
Wenn die Administratorschnittstelle 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 abrufen. Nachdem Sie eine Abfrage ausgeführt haben, werden die Ergebnisse in Ihren artifacts Google Cloud -Bucket exportiert.
Beachten Sie vor dem Ausführen dieses Vorgangs Folgendes:
- Unterstützte Vorgänge umfassen nur
read-only
MySQL- oder Spanner-Abfragen. Wenn mit 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 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-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-Dienstes.LOCATION
: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst befindet.QUERY
: Die SQL-Abfrage, mit der Sie auf Ihre Metadaten zugreifen.- 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 Artifacts 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 ausrichten.- 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 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, mit dem eine select *
-Abfrage aus einer Datenbank namens DBS ausgeführt wird.
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 für Abfragemetadaten interpretieren
Wenn Sie zum ersten Mal einen Befehl zum Abfragen von Metadaten ausführen, wird in Ihrem Google Cloud Artefakt-Bucket Google Cloud automatisch ein Google Cloud -Ordner erstellt.
Dieser Ordner heißt query-results
. Nach jeder erfolgreichen Ausführung einer Abfrage (API-Aufruf) wird im Ordner query-results
ein neuer Ordner mit einer zufällig generierten UUID erstellt.
Jeder neue Ordner enthält eine result manifest
-Datei mit Ihren Suchergebnissen. 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 Ergebnismanifestdatei:
- Das Feld
status
gibt an, ob die Abfrage erfolgreich war oder fehlgeschlagen ist. - Wenn die Ausführung der Abfrage erfolgreich ist, werden im Feld
filenames
alle erstellten Dateien aufgeführt. Diese Dateien befinden sich im selben Ordner wie dieresult manifest
-Datei. - Wenn die Abfrage zu einem Fehler geführt hat, wird im Feld
details
die Fehlermeldung angezeigt.
Ressourcenstandort Ihrer Metadaten ändern
Mit diesem Vorgang können Sie den Ressourcenstandort 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-location
-Befehl aus, um den Ressourcenstandort 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 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, zu dem Sie den Speicherort Ihrer Metadatenressource verschieben. Dieser Pfad muss mitgs://
beginnen. Beispiel:gs://bucket/object
Im folgenden Beispiel wird ein Beispielbefehl gezeigt, 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
Tabellenattribute ä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
in properties.customerID_2
ändern.
gcloud-CLI
Führen Sie den folgenden
gcloud metastore services alter-table-properties
-Befehl aus, um die Attribute 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-Dienstes.LOCATION
: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst befindet.TABLE_NAME
: der Name der Tabelle, die die Eigenschaften enthält, die Sie ändern, 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-Dienstes.LOCATION
: die Google Cloud Region, in der sich Ihr Dataproc Metastore-Dienst befindet.TABLE_NAME
: der Name der Tabelle, die die Eigenschaften enthält, die Sie ändern, im folgenden Format:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: die vorhandenen Attributwerte, 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 Werte, die Sie hier auflisten, ü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-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 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