Dataproc Metastore-Benutzeroberfläche für Administratoren

Auf dieser Seite wird die Verwendung der Dataproc Metastore-Benutzeroberfläche für Administratoren erläutert.

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 können Sie Ihre Metadaten mit der gcloud CLI oder den Dataproc Metastore APIs verwalten.

Über die Administratoroberfläche können Sie beispielsweise eine SQL-Abfrage direkt auf Ihre Back-End-Metadaten ausführen, um einen bestimmten Tabellennamen abzurufen. Bei diesem Vorgang sind weniger Schritte erforderlich als beim üblichen Workflow, z. B. das Erstellen eines Dataproc-Clusters, das Herstellen einer SSH-Verbindung zum Cluster, das Starten einer Hive-Instanz und schließlich das Ausführen einer Abfrage (z. B. SELECT * FROM table_name).

So können Sie mit der Administratoroberfläche Zeit sparen und die Anzahl der Google Cloud Ressourcen, die zum Abrufen Ihrer Daten erforderlich sind, reduzieren.

Hinweis

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-Benutzeroberflä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-Bearbeiter (roles/metastore.editor) für das Nutzerkonto oder Dienstkonto

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 für Administratoren erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um die Dataproc Metastore-Benutzeroberflä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 Rollen und Berechtigungen für Dataproc Metastore finden Sie unter IAM-Rollen und -Berechtigungen für Dataproc Metastore.

Unterstützte Administratorvorgänge

Sie können Aktionen auf der Administratoroberfläche nur über die gcloud CLI oder die Dataproc Metastore APIs ausführen. 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

    • Metadaten abfragen.
  • 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
    • Eine Tabelle in eine andere Datenbank verschieben

Metadaten abfragen

Mit diesem Vorgang können Sie Metadateninformationen in Ihrer Datenbank mithilfe von SQL-Abfragen abrufen. Nach dem Ausführen einer Abfrage werden die Ergebnisse in den Bucket artifacts Google Cloud kopiert.

Beachten Sie vor dem Ausführen dieses Vorgangs Folgendes:

  • 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 sie manuell aus Ihrem Google Cloud -Bucket löschen. Wenn Sie sie nicht löschen, fallen möglicherweise zusätzliche Speicherkosten an.

gcloud-CLI

  1. 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, 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.
  2. Rufen Sie die Ausgabedatei in Ihrem Bucket artifacts Google Cloud 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.
    • 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.

Im folgenden Beispiel wird ein Beispielbefehl gezeigt, 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 Metadatenvorgangs für Abfragen auswerten

Wenn Sie zum ersten Mal einen Befehl zum Abfragen von Metadaten ausführen, erstellt Dataproc Metastore automatisch einen Google Cloud Ordner im Bucket „artifacts“ Google Cloud . Dieser Ordner heißt query-results. Nach jeder erfolgreichen 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 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 Manifestdatei des Ergebnisses:

  • 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 aufgelistet. Diese Dateien befinden sich im selben Ordner wie die result manifest-Datei.
  • Wenn die Abfrage fehlgeschlagen ist, wird im Feld details die Fehlermeldung angezeigt.

Ressourcenstandort der Metadaten ändern

Mit diesem Vorgang können Sie den Speicherort 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

  1. Führen Sie den folgenden gcloud metastore services alter-metadata-resource-location-Befehl aus, um den Ressourcenspeicherort der 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 von RESOURCE_NAME. Dieser Wert ist der Pfad, an den Sie den Speicherort der Metadatenressource verschieben. Dieser Pfad muss mit gs:// beginnen. Beispiel: gs://bucket/object
  2. Prüfen Sie, ob die Änderung des Ressourcenspeicherorts 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 von RESOURCE_NAME. Dieser Wert ist der Pfad, an den Sie den Speicherort der Metadatenressource verschieben. Dieser Pfad muss mit gs:// beginnen. Beispiel: gs://bucket/object

Im folgenden Beispiel wird ein Beispielbefehl gezeigt, mit dem eine Tabelle namens 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, 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

  1. 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-Dienstes.
    • LOCATION: die Google Cloud Region, in der sich Ihr 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 in UPDATE_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 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, z. B. a=1,b=2,c=3,.... Die hier aufgeführten Werte überschreiben die Werte in UPDATE_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.

Daten, die in externen Tabellen gespeichert sind, können nicht verschoben werden.

gcloud-CLI

  1. 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.
  2. 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.

Im folgenden Beispiel wird ein Beispielbefehl gezeigt, mit dem eine Datenbank namens testdb1 in eine andere Datenbank namens 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

Nächste Schritte