Dataproc Metastore-Benutzeroberfläche für Administratoren

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

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

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

  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-Dienst
    • LOCATION: 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.
  2. 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 Datei result 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

  1. 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 von RESOURCE_NAME. Dieser Wert ist der Pfad, in den Sie den Speicherort Ihrer Metadatenressource verschieben. Dieser Pfad muss mit gs:// beginnen. Beispiel: gs://bucket/object
  2. 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 von RESOURCE_NAME. Dieser Wert ist der Pfad, in den Sie den Speicherort Ihrer Metadatenressource verschieben. Dieser Pfad muss mit gs:// 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

  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-Dienst
    • LOCATION: 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 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-Dienst
  • LOCATION: 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 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.

Sie können keine Daten verschieben, die in externen Tabellen gespeichert sind.

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 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.
  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, 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

Nächste Schritte