Erste SQL-Anweisungen mit Google Cloud Dataflow ausführen

1. Einführung

Cloud-Dataflow.png

Google Cloud Dataflow

Zuletzt aktualisiert:26. Mai 2020

Was ist Dataflow?

Dataflow ist ein verwalteter Dienst zur Ausführung eines breiten Spektrums an Datenverarbeitungsmustern. Die Dokumentation auf dieser Website zeigt Ihnen, wie Sie Ihre Pipelines für die Batch- und Streaming-Datenverarbeitung mit Dataflow bereitstellen, einschließlich Anweisungen zur Verwendung von Dienstfunktionen.

Das Apache Beam SDK ist ein Open-Source-Programmiermodell, mit dem Sie sowohl Batch- als auch Streamingpipelines entwickeln können. Sie erstellen Ihre Pipelines mit einem Apache Beam-Programm und führen sie dann im Dataflow-Dienst aus. Die Apache Beam-Dokumentation enthält detaillierte konzeptionelle Informationen und Referenzmaterial für das Apache Beam-Programmiermodell, SDKs und andere Runner.

Analyse von Streamingdaten mit hoher Geschwindigkeit

Dataflow ermöglicht die schnelle, vereinfachte Entwicklung von Streamingdaten-Pipelines mit geringerer Datenlatenz.

Betrieb und Verwaltung vereinfachen

Dank des serverlosen Ansatzes von Dataflow entfällt der operative Aufwand von Data Engineering-Arbeitslasten, sodass sich Teams auf das Programmieren konzentrieren können, anstatt Servercluster zu verwalten.

Gesamtbetriebskosten senken

Durch das Autoscaling von Ressourcen und eine kostenoptimierte Batchverarbeitung bietet Dataflow praktisch unbegrenzte Kapazitäten für Ihre saisonalen Arbeitslasten und Lastspitzen, ohne dass unnötige Kosten anfallen.

Wichtige Funktionen

Automatisierte Ressourcenverwaltung und dynamischer Arbeitsausgleich

Dataflow automatisiert die Bereitstellung und Verwaltung von Verarbeitungsressourcen, um die Latenz zu minimieren und die Auslastung zu maximieren, sodass Sie Instanzen nicht manuell erstellen oder reservieren müssen. Die Arbeitsaufteilung wird ebenfalls automatisiert und optimiert, sodass Arbeitsverzögerungen dynamisch ausgeglichen werden. Keine Lust, nach den Hotkeys zu suchen oder Ihre Eingabedaten vorverarbeiten.

Horizontales Autoscaling

Durch horizontales Autoscaling von Worker-Ressourcen für einen optimalen Durchsatz wird das gesamte Preis-Leistungs-Verhältnis verbessert.

Flexible Ressourcenplanungspreise für die Batchverarbeitung

Zur flexiblen Verarbeitung bei der zeitlichen Planung von Jobs, z. B. über Nacht, bietet die flexible Ressourcenplanung (FlexRS) einen niedrigeren Preis für die Batchverarbeitung. Diese flexiblen Jobs werden in einer Warteschlange mit der Garantie platziert, dass sie innerhalb von sechs Stunden abgerufen und ausgeführt werden.

Was Sie im Rahmen dieses Kurses durchführen

In diesem Codelab beginnen Sie mit der Verwendung von Dataflow SQL, indem Sie eine SQL-Anweisung über die Dataflow SQL-UI senden. Anschließend sehen Sie sich die ausgeführte Pipeline mithilfe der Dataflow-Monitoring-UI an.

Aufgaben in diesem Lab

  • Hier erfahren Sie, wie Sie eine SQL-Anweisung als Dataflow-Job in der Dataflow SQL-UI senden.
  • Hier erfahren Sie, wie Sie die Dataflow-Pipeline aufrufen.
  • Erkunden Sie die mit der SQL-Anweisung erstellte Dataflow-Grafik.
  • Überwachen Sie die in der Grafik bereitgestellten Monitoringinformationen.

Voraussetzungen

  • Ein Google Cloud Platform-Projekt mit aktivierter Abrechnung.
  • Google Cloud Dataflow und Google Cloud PubSub sind aktiviert.

2. Einrichtung

Achten Sie darauf, dass die Dataflow API und die Cloud Pub/Sub API aktiviert sind. Sie können dies überprüfen, indem Sie die & Seite „Dienste“.

3. Auf die Dataflow SQL-UI zugreifen

Die Dataflow SQL-UI ist eine Einstellung für die BigQuery-Web-UI zum Erstellen von Dataflow SQL-Jobs. Sie können über die BigQuery-Web-UI auf die Dataflow SQL-UI zugreifen.

  1. Öffnen Sie die BigQuery-Web-UI.

  1. Wechseln Sie zur Cloud Dataflow-Engine.
  • Klicken Sie auf das Drop-down-Menü Mehr und wählen Sie Abfrageeinstellungen aus.

Das Drop-down-Menü "Mehr" in der BigQuery-Web-UI mit der ausgewählten Option "Abfrageeinstellungen"

  • Wählen Sie im Menü Abfrageeinstellungen die Option Dataflow-Engine aus.
  • Klicken Sie in der Eingabeaufforderung, die angezeigt wird, wenn die Dataflow API und die Data Catalog API nicht aktiviert sind, auf APIs aktivieren.

Das Menü "Abfrageeinstellungen" mit der Eingabeaufforderung "APIs aktivieren"

  • Klicken Sie auf Speichern. Das Menü "Abfrageeinstellungen" mit aktiviertem Optionsfeld "Dataflow-Engine" und aktivierten APIs

Sie können auch über die Dataflow-Monitoring-Oberfläche auf die Dataflow SQL-UI zugreifen.

  • Rufen Sie die Dataflow-Monitoring-Oberfläche auf.

  • Klicken Sie auf Job aus SQL erstellen.

4. Dataflow-Job mit einer SQL-Abfrage ausführen

Dataflow SQL-Abfragen schreiben

Dataflow SQL-Abfragen verwenden die Dataflow SQL-Abfragesyntax. Die Dataflow SQL-Abfragesyntax ähnelt der BigQuery-Standard-SQL. Mit den Dataflow SQL-Streamingerweiterungen können Sie Daten aus kontinuierlich aktualisierten Dataflow-Quellen wie Pub/Sub aggregieren. Mit der folgenden Abfrage werden beispielsweise pro Minute die Fahrgäste in einem Pub/Sub-Stream von Taxifahrten gezählt:

SELECT
  TUMBLE_START('INTERVAL 1 MINUTE') as period_start,
  SUM(passenger_count) AS pickup_count
FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime`
WHERE
  ride_status = "pickup"
GROUP BY
  TUMBLE(event_timestamp, 'INTERVAL 1 MINUTE')

Dataflow SQL-Abfragen ausführen

Wenn Sie eine Dataflow SQL-Abfrage ausführen, wandelt Dataflow die Abfrage in eine Apache Beam-Pipeline um und führt die Pipeline aus.

Sie können eine Dataflow SQL-Abfrage mit der Cloud Console oder dem gcloud-Befehlszeilentool ausführen.

Verwenden Sie zum Ausführen einer Dataflow SQL-Abfrage die Dataflow SQL-UI.

  • Rufen Sie die Dataflow SQL-UI auf.
  • Geben Sie die Dataflow SQL-Abfrage oben in den Abfrageeditor ein.
  • Klicken Sie auf Cloud Dataflow-Job erstellen, um ein Feld mit Joboptionen zu öffnen.
  • (Optional) Klicken Sie auf Optionale Parameter anzeigen und durchsuchen Sie die Liste.
  • Wählen Sie im Bereich „Destination“ (Ziel) des Bereichs „BigQuery“ als Ausgabetyp aus.

1155e94529ff58fe.png

  • Wählen Sie eine Dataset-ID aus und erstellen Sie den Tabellennamen „passengers_per_min“
  • Klicken Sie auf „Erstellen“.

Weitere Informationen zum Abfragen von Daten und zum Schreiben von Dataflow SQL-Abfrageergebnissen finden Sie unter Dataflow SQL verwenden.

5. Job in der Dataflow Monitoring-UI untersuchen

Wenn Sie Ihre Pipeline mit dem verwalteten Dataflow-Dienst ausführen, können Sie diesen und alle anderen Jobs über die webbasierte Monitoring-Benutzeroberfläche von Dataflow ansehen. In der Überwachungsoberfläche sehen Sie Ihre Dataflow-Jobs und können mit ihnen interagieren.

Sie können über die Google Cloud Console auf die Dataflow-Monitoring-Oberfläche zugreifen. Auf dieser wird Folgendes angezeigt:

  • Eine Liste aller derzeit ausgeführten Dataflow-Jobs und bereits abgeschlossenen Jobs der letzten 30 Tage.
  • Eine grafische Darstellung aller Pipelines
  • Details zum Status, zur Ausführung und zur SDK-Version eines Jobs
  • Links zu Informationen über die Google Cloud-Dienste, die Ihre Pipeline ausführen, z. B. Compute Engine und Cloud Storage.
  • Alle Fehler oder Warnungen, die während eines Jobs auftreten

Sie können Diagramme zur Jobüberwachung in der Dataflow-Monitoring-Oberfläche aufrufen. Diese Diagramme zeigen Messwerte für die Dauer eines Pipelinejobs und enthalten die folgenden Informationen:

  • Sichtbarkeit auf Schrittebene zum Erkennen von Schritten, die Pipelineverzögerungen verursachen können
  • Statistische Informationen, die auf ungewöhnliches Verhalten hinweisen können
  • E/A-Messwerte, mit denen Sie Engpässe in Quellen und Senken identifizieren können.

Auf die Dataflow-Monitoring-Oberfläche zugreifen

So greifen Sie auf die Monitoring-Oberfläche von Dataflow zu:

  • Zur Cloud Console:

  • Wählen Sie Ihr Google Cloud-Projekt aus.
  • Klicken Sie auf das Menü in der oberen linken Ecke.
  • Gehen Sie zum Abschnitt „Big Data“ und klicken Sie auf „Dataflow“.

Eine Liste der Dataflow-Jobs mit ihrem Status wird angezeigt.

58f6402cc923d6bb.png

Eine Liste der Dataflow-Jobs in der Cloud Console mit Jobs im Status „Wird ausgeführt“, „Fehlgeschlagen“ und „Erfolgreich“.

Ein Job kann folgende Statuswerte haben:

  • : Die Monitoring-UI hat noch keinen Status vom Dataflow-Dienst erhalten.
  • Running (Aktiv): Der Job wird gerade ausgeführt.
  • Nicht gestartet: Der Job ist erstellt, aber das System benötigt vor dem Start noch etwas Vorbereitungszeit.
  • Queued (In der Warteschlange): Ein FlexRS-Job wurde in die Warteschlange gestellt.
  • Cancelling...: Der Job wird gerade abgebrochen.
  • Canceled (Abgebrochen): Der Job wurde vom Nutzer abgebrochen.
  • Draining... (Draining läuft...): Der Job wird gerade per Drain beendet.
  • Drained (Draining angewendet): Der Job wurde vom Nutzer per Drain beendet.
  • Wird aktualisiert...: Der Job wird gerade aktualisiert.
  • Updated (Aktualisiert): Der Job wurde vom Nutzer aktualisiert.
  • Succeeded (Erfolgreich): Der Job wurde erfolgreich abgeschlossen.
  • Failed (Fehlgeschlagen): Der Job konnte nicht abgeschlossen werden.

Suchen Sie nach dem Job mit „dfsql“. als Teil der Stellenbezeichnung ein und klicken Sie auf den Namen.

e3bce9b1929564c9.png

Die Seite „Jobdetails“ mit Folgendem:

  • Jobgrafik: die visuelle Darstellung der Pipeline
  • Jobmesswerte: Messwerte zur Ausführung Ihres Jobs
  • Infobereich für Jobs: beschreibende Informationen zu Ihrer Pipeline
  • Joblogs: Logs, die vom Dataflow-Dienst auf Jobebene generiert werden
  • Worker-Logs: Logs, die vom Dataflow-Dienst auf Worker-Ebene generiert werden
  • Berichte zu Jobfehlern: Diagramme, die zeigen, wo Fehler auf der ausgewählten Zeitachse aufgetreten sind und die Anzahl aller protokollierten Fehler
  • Zeitauswahl: Tool zum Anpassen der Zeitspanne der Messwerte

Auf der Seite „Jobdetails“ können Sie die Jobansicht mit der Grafik „Jobgrafik“ und dem Tab „Jobmesswerte“ wechseln.

  • Klicken Sie auf den Tab JOBMETRIKEN und sehen Sie sich die Diagramme an.

7076f8a8911066ab.png

6. Dataflow SQL-Job anhalten

Verwenden Sie den Befehl „Cancel“, um Dataflow SQL-Jobs zu beenden. Das Beenden eines Dataflow SQL-Jobs per Drain wird nicht unterstützt.

1229697a873e1cf9.png (1229697a873e1cf9.png)