Transformation Pushdown – Übersicht

Für eine verbesserte Leistung in Ihren Datenpipelines können Sie einige Transformationsvorgänge an BigQuery anstelle von Apache Spark übertragen. Mit der Push-Down-Transformation kann ein Vorgang in einer Cloud Data Fusion-Datenpipeline an BigQuery als Ausführungs-Engine übertragen werden. Daraufhin werden der Vorgang und seine Daten in BigQuery übertragen und der Vorgang dort ausgeführt.

Transformations-Pushdown verbessert die Leistung von Pipelines mit mehreren komplexen JOIN-Vorgängen oder anderen unterstützten Transformationen. Die Ausführung einiger Transformationen in BigQuery ist möglicherweise schneller als die Ausführung in Spark.

Nicht unterstützte Transformationen und alle Vorschautransformationen werden in Spark ausgeführt.

Unterstützte Transformationen

Transformations-Pushdown ist ab Cloud Data Fusion-Version 6.5.0 verfügbar. Einige der folgenden Transformationen werden jedoch erst in höheren Versionen unterstützt.

JOIN Vorgänge

  • Transformations-Pushdown ist für JOIN-Vorgänge in Cloud Data Fusion Version 6.5.0 und höher verfügbar.

  • Es werden grundlegende (on-keys) und erweiterte JOIN-Vorgänge unterstützt.

  • Joins müssen genau zwei Eingabephasen haben, damit die Ausführung in BigQuery erfolgen kann.

  • Joins, die so konfiguriert sind, dass eine oder mehrere Eingaben in den Arbeitsspeicher geladen werden, werden in Spark anstelle von BigQuery ausgeführt, außer in den folgenden Fällen:

    • Wenn eine der Eingaben für den Join bereits nach unten verschoben wurde.
    • Wenn Sie den Join für die Ausführung in SQL Engine konfiguriert haben (siehe Option Phasen zum Erzwingen der Ausführung).

BigQuery-Senke

Transformations-Pushdown ist für die BigQuery-Senke in Cloud Data Fusion Version 6.7.0 und höher verfügbar.

Wenn die BigQuery-Senke einer Phase folgt, die in BigQuery ausgeführt wurde, wird der Vorgang zum Schreiben von Datensätzen in BigQuery direkt in BigQuery ausgeführt.

Sie benötigen Folgendes, um die Leistung mit dieser Senke zu verbessern:

  • Das Dienstkonto muss die Berechtigung zum Erstellen und Aktualisieren von Tabellen in dem von der BigQuery-Senke verwendeten Dataset haben.
  • Die Datasets, die für das Transformations-Pushdown und die BigQuery-Senke verwendet werden, müssen am selben Speicherort gespeichert werden.
  • Der Vorgang muss einer der folgenden sein:
    • Insert (die Option Truncate Table wird nicht unterstützt)
    • Update
    • Upsert

GROUP BY Aggregationen

Transformations-Pushdown ist für GROUP BY-Aggregationen in Cloud Data Fusion Version 6.7.0 und höher verfügbar.

GROUP BY-Aggregationen in BigQuery sind für die folgenden Vorgänge verfügbar:

  • Avg
  • Collect List (Nullwerte werden aus dem Ausgabearray entfernt)
  • Collect Set (Nullwerte werden aus dem Ausgabearray entfernt)
  • Concat
  • Concat Distinct
  • Count
  • Count Distinct
  • Count Nulls
  • Logical And
  • Logical Or
  • Max
  • Min
  • Standard Deviation
  • Sum
  • Sum of Squares
  • Corrected Sum of Squares
  • Variance
  • Shortest String
  • Longest String

GROUP BY-Aggregationen werden in BigQuery in den folgenden Fällen ausgeführt:

  • Sie folgt einer Phase, die bereits nach unten verschoben wurde.
  • Sie haben sie für die Ausführung in SQL Engine konfiguriert (siehe Option Phasen zum Erzwingen der Ausführung).

Aggregationen deduplizieren

Transformations-Pushdown ist in Cloud Data Fusion Version 6.7.0 und höher für deduplizierte Aggregationen für die folgenden Vorgänge verfügbar:

  • Kein Filtervorgang angegeben
  • ANY (ein Wert ungleich null für das gewünschte Feld)
  • MIN (Mindestwert für das angegebene Feld)
  • MAX (Höchstwert für das angegebene Feld)

Die folgenden Vorgänge werden nicht unterstützt:

  • FIRST
  • LAST

Deduplizierte Aggregationen werden in den folgenden Fällen in der SQL-Engine ausgeführt:

  • Sie folgt einer Phase, die bereits nach unten verschoben wurde.
  • Sie haben sie für die Ausführung in SQL Engine konfiguriert (siehe Option Phasen zum Erzwingen der Ausführung).

BigQuery-Quell-Pushdown

BigQuery-Quell-Pushdown ist ab Cloud Data Fusion-Version 6.8.0 verfügbar.

Wenn eine BigQuery-Quelle einer Phase folgt, die mit BigQuery-Pushdown kompatibel ist, kann die Pipeline alle kompatiblen Phasen in BigQuery ausführen.

Cloud Data Fusion kopiert die Datensätze, die zum Ausführen der Pipeline in BigQuery erforderlich sind.

Wenn Sie das BigQuery-Quell-Pushdown verwenden, bleiben die Eigenschaften der Tabellenpartitionierung und des Clusterings erhalten. So können Sie mit diesen Eigenschaften weitere Vorgänge wie Joins optimieren.

Zusätzliche Anforderungen

Wenn Sie BigQuery-Quell-Pushdown verwenden möchten, müssen folgende Voraussetzungen erfüllt sein:

  • Das für BigQuery Transformation Pushdown konfigurierte Dienstkonto muss Berechtigungen zum Lesen von Tabellen im Dataset der BigQuery-Quelle haben.

  • Die in der BigQuery-Quelle verwendeten Datasets und das für das Transformations-Pushdown konfigurierte Dataset müssen am selben Speicherort gespeichert werden.

Fensteraggregationen

Transformations-Pushdown ist in Cloud Data Fusion-Version 6.9 und höher für Fensteraggregationen verfügbar. Fensteraggregationen werden in BigQuery für die folgenden Vorgänge unterstützt:

  • Rank
  • Dense Rank
  • Percent Rank
  • N tile
  • Row Number
  • Median
  • Continuous Percentile
  • Lead
  • Lag
  • First
  • Last
  • Cumulative distribution
  • Accumulate

Fensteraggregationen werden in BigQuery in den folgenden Fällen ausgeführt:

  • Sie folgt einer Phase, die bereits nach unten verschoben wurde.
  • Sie haben sie für die Ausführung in SQL Engine konfiguriert (siehe Option Phasen zum Erzwingen des Pushdowns).

Pushdownr-Filter-Push-Down

Wrangler-Filter-Pushdown ist ab Cloud Data Fusion-Version 6.9 verfügbar.

Wenn Sie das Wrangler-Plug-in verwenden, können Sie Filter, auch Precondition-Vorgänge genannt, zur Ausführung in BigQuery statt in Spark senden.

Das Filter-Push-down wird nur im SQL-Modus für Preconditions unterstützt, der ebenfalls in Version 6.9 veröffentlicht wurde. In diesem Modus akzeptiert das Plug-in einen Vorbedingungsausdruck in ANSI-Standard-SQL.

Wenn der SQL-Modus für Vorbedingungen verwendet wird, sind Anweisungen und benutzerdefinierte Anweisungen für das Wrangler-Plug-in deaktiviert, da sie im SQL-Modus nicht mit Vorbedingungen unterstützt werden.

Der SQL-Modus für Vorbedingungen wird für Wrangler-Plug-ins mit mehreren Eingaben nicht unterstützt, wenn "Transformations-Pushdown" aktiviert ist. Bei Verwendung mit mehreren Eingaben wird diese Wrangler-Phase mit SQL-Filterbedingungen in Spark ausgeführt.

Filter werden in BigQuery in den folgenden Fällen ausgeführt:

  • Sie folgt einer Phase, die bereits nach unten verschoben wurde.
  • Sie haben sie für die Ausführung in SQL Engine konfiguriert (siehe Option Phasen zum Erzwingen des Pushdowns).

Messwerte

Weitere Informationen zu den Messwerten, die Cloud Data Fusion für den Teil der Pipeline bereitstellt, der in BigQuery ausgeführt wird, finden Sie unter Messwerte der BigQuery-Pushdown-Pipeline.

Wann sollte ich Transformations-Pushdown verwenden?

Die Ausführung von Transformationen in BigQuery umfasst Folgendes:

  1. Datensätze für unterstützte Phasen in Ihrer Pipeline in BigQuery schreiben
  2. Unterstützte Phasen in BigQuery ausführen.
  3. Lesen von Datensätzen aus BigQuery nach Ausführung der unterstützten Transformationen, sofern ihnen keine BigQuery-Senke folgt.

Abhängig von der Größe Ihrer Datasets kann ein erheblicher Netzwerkaufwand anfallen, der sich negativ auf die Gesamtausführungszeit der Pipeline auswirken kann, wenn das Transformations-Pushdown aktiviert ist.

Aufgrund des Netzwerk-Overheads empfehlen wir Transformation Pushdown in den folgenden Fällen:

  • Mehrere unterstützte Vorgänge werden nacheinander ausgeführt (ohne Schritte zwischen den Phasen).
  • Die Leistungssteigerungen, die BigQuery bei der Ausführung der Transformationen im Vergleich zu Spark bietet, wiegt die Latenz bei Datenbewegungen in und möglicherweise nach BigQuery.

Funktionsweise

Wenn Sie eine Pipeline ausführen, die Transformation Pushdown verwendet, führt Cloud Data Fusion unterstützte Transformationsphasen in BigQuery aus. Alle anderen Phasen in der Pipeline werden in Spark ausgeführt.

Beim Ausführen von Transformationen:

  1. Cloud Data Fusion lädt die Eingabe-Datasets in BigQuery, indem Datensätze in Cloud Storage geschrieben und dann ein BigQuery-Ladejob ausgeführt wird.

  2. JOIN-Vorgänge und unterstützte Transformationen werden dann mithilfe von SQL-Anweisungen als BigQuery-Jobs ausgeführt.

  3. Wenn nach der Ausführung der Jobs eine weitere Verarbeitung erforderlich ist, können Datensätze aus BigQuery in Spark exportiert werden. Wenn jedoch die Option Direktes Kopieren in BigQuery-Senken aktiviert ist und die BigQuery-Senke einer in BigQuery ausgeführten Phase folgt, werden die Datensätze direkt in die BigQuery-Zielsenkentabelle geschrieben.

Das folgende Diagramm zeigt, wie Transformation Pushdown unterstützte Transformationen in BigQuery anstelle von Spark ausführt.

Pushdown von Pushdowns in BigQuery in Cloud Data Fusion-Pipelines

Best Practices

Cluster- und Executor-Größen anpassen

So optimieren Sie die Ressourcenverwaltung in Ihrer Pipeline:

  • Verwenden Sie die richtige Anzahl von Cluster-Workern (Knoten) für eine Arbeitslast. Mit anderen Worten: Nutzen Sie den bereitgestellten Dataproc-Cluster optimal, indem Sie die verfügbare CPU und den Arbeitsspeicher für Ihre Instanz voll nutzen und gleichzeitig von der Ausführungsgeschwindigkeit von BigQuery für große Jobs profitieren.

  • Verbessern Sie die Parallelität in Ihren Pipelines mithilfe von Autoscaling-Clustern.

  • Passen Sie die Ressourcenkonfigurationen in den Phasen Ihrer Pipeline an, in denen während der Pipelineausführung Datensätze per Push oder Pull aus BigQuery übertragen werden.

Empfohlen: Erhöhen Sie die Anzahl der CPU-Kerne für Ihre Executor-Ressourcen (bis zur Anzahl der CPU-Kerne, die Ihr Worker-Knoten verwendet). Die Executors optimieren die CPU-Nutzung während der Serialisierungs- und Deserialisierungsschritte, wenn Daten in und aus BigQuery gelangen. Weitere Informationen finden Sie unter Clustergröße.

Ein Vorteil von Transformationen in BigQuery besteht darin, dass Ihre Pipelines auf kleineren Dataproc-Clustern ausgeführt werden können. Wenn Joins die ressourcenintensivsten Vorgänge in Ihrer Pipeline sind, können Sie mit kleineren Clustergrößen experimentieren, da die umfangreichen JOIN-Vorgänge jetzt in BigQuery ausgeführt werden. Dadurch können Sie möglicherweise Ihre Computing-Gesamtkosten senken.

Daten mit der BigQuery Storage Read API schneller abrufen

Nachdem BigQuery die Transformationen ausgeführt hat, muss Ihre Pipeline möglicherweise zusätzliche Phasen in Spark ausführen. In Cloud Data Fusion Version 6.7.0 und höher unterstützt Transformation Pushdown die BigQuery Storage Read API, die die Latenz verbessert und schnellere Lesevorgänge in Spark ermöglicht. Sie kann die Ausführungszeit der gesamten Pipeline reduzieren.

Die API liest Datensätze parallel, daher empfehlen wir, die Executor-Größen entsprechend anzupassen. Reduzieren Sie bei der Ausführung ressourcenintensiver Vorgänge in BigQuery die Speicherzuweisung für die Executors, um die Parallelität bei der Ausführung der Pipeline zu verbessern (siehe Cluster- und Executor-Größen anpassen).

Die BigQuery Storage Read API ist standardmäßig deaktiviert. Sie können sie in Ausführungsumgebungen aktivieren, in denen Scala 2.12 installiert ist (einschließlich Dataproc 2.0 und Dataproc 1.5).

Dataset-Größe berücksichtigen

Berücksichtigen Sie die Größen der Datasets in den JOIN-Vorgängen. Bei JOIN-Vorgängen, die eine erhebliche Anzahl von Ausgabeeinträgen generieren, z. B. bei einem Cross-JOIN-Vorgang, kann das resultierende Dataset um Größenordnungen größer sein als das Eingabe-Dataset. Berücksichtigen Sie auch den Aufwand, der mit dem Zurückziehen dieser Datensätze in Spark bei zusätzlicher Spark-Verarbeitung für diese Datensätze (z. B. einer Transformation oder Senke) im Zusammenhang mit der gesamten Pipelineleistung verbunden ist.

Verzerrte Daten minimieren

JOIN-Vorgänge für stark verzerrte Daten können dazu führen, dass der BigQuery-Job die Ressourcennutzungslimits überschreitet, wodurch der JOIN-Vorgang fehlschlägt. Um dies zu verhindern, rufen Sie die Einstellungen des Joiner-Plug-ins auf und ermitteln Sie die verzerrte Eingabe im Feld Skewed Input Stage (Verzerrte Eingabephase). Dadurch kann Cloud Data Fusion die Eingaben so anordnen, dass das Risiko einer Überschreitung der Limits durch die BigQuery-Anweisung verringert wird.

Identifizieren Sie in den Einstellungen des Joiner-Plug-ins verzerrte Daten im Feld „Skewed Input Stage“ (Verzerrte Eingabephase).

Nächste Schritte