Von Dataflow verwaltete E/A

Mit verwalteter E/A kann Dataflow bestimmte E/A-Connectors verwalten, die in Apache Beam-Pipelines verwendet werden. Verwaltete E/A-Ressourcen vereinfachen die Verwaltung von Pipelines, die mit unterstützten Quellen und Senken integriert sind.

Verwaltete E/A besteht aus zwei Komponenten, die zusammenarbeiten:

  • Eine Apache Beam-Transformation, die eine gemeinsame API zum Erstellen von E/A-Connectors (Quellen und Senken) bereitstellt.

  • Ein Dataflow-Dienst, der diese E/A-Connectors für Sie verwaltet, einschließlich der Möglichkeit, sie unabhängig von der Apache Beam-Version zu aktualisieren.

Zu den Vorteilen der verwalteten E/A gehören:

  • Automatische Upgrades In Dataflow werden die verwalteten E/A-Connectors in Ihrer Pipeline automatisch aktualisiert. Das bedeutet, dass Ihre Pipeline Sicherheitskorrekturen, Leistungsverbesserungen und Fehlerkorrekturen für diese Connectoren erhält, ohne dass Codeänderungen erforderlich sind. Weitere Informationen finden Sie unter Automatische Upgrades.

  • Eine einheitliche API Traditionell haben E/A-Connectors in Apache Beam unterschiedliche APIs und jeder Connector wird auf unterschiedliche Weise konfiguriert. Managed I/O bietet eine einzelne Konfigurations-API mit Schlüssel/Wert-Eigenschaften, was zu einfacherem und konsistenterem Pipelinecode führt. Weitere Informationen finden Sie unter Configuration API.

Voraussetzungen

  • Die folgenden SDKs unterstützen die verwaltete E/A:

    • Apache Beam SDK für Java Version 2.58.0 oder höher
    • Apache Beam SDK für Python Version 2.61.0 oder höher.
  • Der Backend-Dienst erfordert Dataflow Runner v2. Wenn Runner v2 nicht aktiviert ist, wird Ihre Pipeline zwar ausgeführt, aber Sie können nicht von den Vorteilen des verwalteten I/O-Dienstes profitieren.

Automatische Upgrades

In Dataflow-Pipelines mit verwalteten E/A-Connectors wird automatisch die neueste zuverlässige Version des Connectors verwendet:

  • Wenn Sie einen Job einreichen, verwendet Dataflow die neueste Version des Connectors, die getestet wurde und gut funktioniert.

  • Bei Streamingjobs prüft Dataflow bei jedem Start eines Ersatzjobs auf Updates und verwendet automatisch die neueste bekannte fehlerfreie Version. Dataflow führt diese Prüfung auch dann durch, wenn Sie im Ersatzjob keinen Code ändern.

Sie müssen den Connector oder die Apache Beam-Version Ihrer Pipeline nicht manuell aktualisieren.

Das folgende Diagramm zeigt den Upgrade-Vorgang. Der Nutzer erstellt eine Apache Beam-Pipeline mit der SDK-Version X. Wenn der Nutzer den Job einreicht, prüft Dataflow die Version der verwalteten E/A und führt ein Upgrade auf Version Y durch.

Diagramm, das den Upgradevorgang für die verwaltete I/O zeigt

Durch das Upgrade wird die Startzeit eines Jobs um etwa zwei Minuten verlängert. Wenn Sie den Status verwalteter I/O-Vorgänge prüfen möchten, suchen Sie nach Logeinträgen, die den String „Managed Transform(s)“ enthalten.

Configuration API

Verwaltete E/A ist eine schlüsselfertige Apache Beam-Transformation, die eine einheitliche API zum Konfigurieren von Quellen und Senken bietet.

Um eine von der verwalteten E/A unterstützte Quelle oder Senke zu erstellen, verwenden Sie in Java die Klasse Managed. Geben Sie an, welche Quelle oder Senke instanziiert werden soll, und übergeben Sie eine Reihe von Konfigurationsparametern, ähnlich wie hier:

Map config = ImmutableMap.<String, Object>builder()
    .put("config1", "abc")
    .put("config2", 1);

pipeline.apply(Managed.read(/*Which source to read*/).withConfig(config))
    .getSinglePCollection();

Sie können Konfigurationsparameter auch als YAML-Datei übergeben. Ein vollständiges Codebeispiel finden Sie unter Aus Apache Iceberg lesen.

Dynamische Ziele

Bei einigen Senken kann der verwaltete E/A-Connector basierend auf Feldwerten in den eingehenden Datensätzen dynamisch ein Ziel auswählen.

Wenn Sie dynamische Ziele verwenden möchten, geben Sie einen Vorlagenstring für das Ziel an. Der Vorlagenstring kann Feldnamen in geschweiften Klammern enthalten, z. B. "tables.{field1}". Zur Laufzeit ersetzt der Connector den Wert des Felds für jeden eingehenden Datensatz, um das Ziel für diesen Datensatz zu ermitteln.

Angenommen, Ihre Daten enthalten ein Feld namens airport. Sie können das Ziel auf "flights.{airport}" festlegen. Wenn airport=SFO ist, wird der Eintrag in flights.SFO geschrieben. Verwenden Sie für verschachtelte Felder die Punktnotation. Beispiel: {top.middle.nested}.

Wird gefiltert

Sie können bestimmte Felder herausfiltern, bevor sie in die Zieltabelle geschrieben werden. Für Senken, die dynamische Ziele unterstützen, können Sie dazu den Parameter drop, keep oder only verwenden. Mit diesen Parametern können Sie Zielmetadaten in die Eingabedatensätze aufnehmen, ohne sie an das Ziel zu schreiben.

Für einen bestimmten Datenablauf kann jeweils nur einer dieser Parameter festgelegt werden.

Konfigurationsparameter Datentyp Beschreibung
drop Liste mit Strings Eine Liste der Feldnamen, die gelöscht werden sollen, bevor sie in das Ziel geschrieben werden.
keep Liste mit Strings Eine Liste der Feldnamen, die beim Schreiben in das Ziel beibehalten werden sollen. Andere Felder werden gelöscht.
only String Der Name genau eines Felds, das als Datensatz der obersten Ebene verwendet werden soll, wenn Daten in das Ziel geschrieben werden. Alle anderen Felder werden gelöscht. Dieses Feld muss vom Typ „Zeile“ sein.

Unterstützte Quellen und Senken

Verwaltete E/A unterstützt die folgenden Quellen und Senken.