Bewährte Methoden für das Schreiben in Dateien in Data Lake mit Datenflüssen

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

Falls Sie noch nicht mit Azure Data Factory vertraut sind, ist es ratsam, den Artikel Einführung in Azure Data Factory zu lesen.

In diesem Tutorial lernen Sie bewährte Methoden kennen, die beim Schreiben von Dateien in ADLS Gen2 oder Azure Blob Storage mithilfe von Datenflüssen angewendet werden können. Sie benötigen Zugriff auf ein Azure Blob Storage-Konto oder ein Azure Data Lake Store Gen2-Konto, um eine Parquet-Datei zu lesen und die Ergebnisse dann in Ordnern zu speichern.

Voraussetzungen

  • Azure-Abonnement. Wenn Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen, bevor Sie beginnen.
  • Azure-Speicherkonto. Sie verwenden den ADLS-Speicher als Quelldatenspeicher und Senkendatenspeicher. Wenn Sie kein Speicherkonto besitzen, finden Sie unter Informationen zu Azure-Speicherkonten Schritte zum Erstellen eines solchen Kontos.

Bei den Schritten in diesem Tutorial wird davon ausgegangen, dass Sie

Erstellen einer Data Factory

In diesem Schritt erstellen Sie eine Data Factory und öffnen die Data Factory-Benutzeroberfläche, um eine Pipeline in der Data Factory zu erstellen.

  1. Öffnen Sie Microsoft Edge oder Google Chrome. Die Data Factory-Benutzeroberfläche wird derzeit nur in den Webbrowsern Microsoft Edge und Google Chrome unterstützt.

  2. Wählen Sie im Menü auf der linken Seite Ressource erstellen>Integration>Data Factory aus.

  3. Geben Sie auf der Seite Neue Data Factory unter Name den Namen ADFTutorialDataFactory ein.

  4. Wählen Sie das Azure-Abonnement aus, in dem die Data Factory erstellt werden soll.

  5. Führen Sie unter Ressourcengruppe einen der folgenden Schritte aus:

    a. Wählen Sie die Option Use existing(Vorhandene verwenden) und dann in der Dropdownliste eine vorhandene Ressourcengruppe.

    b. Wählen Sie Neu erstellen aus, und geben Sie den Namen einer Ressourcengruppe ein. Weitere Informationen zu Ressourcengruppen finden Sie unter Was ist Azure Resource Manager?

  6. Wählen Sie unter Version die Option V2.

  7. Wählen Sie unter Standort einen Standort für die Data Factory aus. In der Dropdownliste werden nur unterstützte Standorte angezeigt. Datenspeicher (etwa Azure Storage und SQL-Datenbank) und Computeeinheiten (etwa Azure HDInsight), die von der Data Factory genutzt werden, können sich in anderen Regionen befinden.

  8. Klicken Sie auf Erstellen.

  9. Nach Abschluss der Erstellung wird der Hinweis im Benachrichtigungscenter angezeigt. Wählen Sie Zu Ressource wechseln aus, um zur Data Factory-Seite zu navigieren.

  10. Klicken Sie auf Erstellen und überwachen, um die Data Factory-Benutzeroberfläche auf einer separaten Registerkarte zu starten.

Erstellen einer Pipeline mit einer Datenflussaktivität

In diesem Schritt erstellen Sie eine Pipeline mit einer Datenflussaktivität.

  1. Klicken Sie auf der Homepage von Azure Data Factory auf Orchestrate (Orchestrieren).

    Screenshot that shows the data factory home page with the Orchestrate button highlighted.

  2. Geben Sie auf der Registerkarte Allgemein der Pipeline als Namen der Pipeline DeltaLake ein.

  3. Setzen Sie auf der oberen Leiste der Factory den Schieberegler Datenfluss debuggen auf „Ein“. Der Debugmodus ermöglicht das interaktive Testen von Transformationslogik mit einem aktiven Spark-Cluster. Die Aufwärmphase von Datenflussclustern dauert 5 bis 7 Minuten. Den Benutzern wird empfohlen, zuerst den Debugmodus zu aktivieren, wenn sie die Entwicklung eines Datenflusses planen. Weitere Informationen finden Sie unter Debugmodus.

    Data Flow Activity

  4. Erweitern Sie im Bereich Aktivitäten das Accordion-Element Verschieben und transformieren. Ziehen Sie die Datenfluss-Aktivität per Drag & Drop aus dem Bereich auf die Pipelinecanvas.

    Screenshot that shows the pipeline canvas where you can drop the Data Flow activity.

  5. Wählen Sie im Popupfenster Datenfluss hinzufügen die Option Neuen Datenfluss erstellen aus, und geben Sie dem Datenfluss den Namen DeltaLake. Klicken Sie anschließend auf „Fertig stellen“.

    Screenshot that shows where you name your data flow when you create a new data flow.

Erstellen von Transformationslogik auf der Datenflusscanvas

Sie verwenden alle Quelldaten (in diesem Tutorial wird eine Parquet-Dateiquelle verwendet) sowie eine Senkentransformation, um die Daten mithilfe der effektivsten Mechanismen für Data Lake ETL im Parquet-Format bereitzustellen.

Final flow

Ziele des Tutorials

  1. Auswählen eines Quelldatasets in einem neuen Datenfluss 1; Verwenden von Datenflüssen zum effektiven Partitionieren Ihres Senkendatasets
  2. Bereitstellen Ihrer partitionierten Daten in ADLS Gen2 Lake-Ordnern

Ausgangspunkt: leere Datenflusscanvas

Zunächst richten Sie die Datenflussumgebung für jeden der unten beschriebenen Mechanismen zum Bereitstellen der Daten in ADLS Gen2 ein:

  1. Klicken Sie auf die Quelltransformation.
  2. Klicken Sie im unteren Bereich neben dem Dataset auf die neue Schaltfläche.
  3. Wählen Sie ein Dataset aus, oder erstellen Sie ein neues. Für diese Demo verwenden Sie ein Parquet-Dataset namens Benutzerdaten.
  4. Fügen Sie eine Transformation für abgeleitete Spalten hinzu. Damit werden die gewünschten Ordnernamen dynamisch festgelegt.
  5. Fügen Sie eine Senkentransformation hinzu.

Hierarchische Ordnerausgabe

Es ist üblich, eindeutige Werte in Ihren Daten zu verwenden, um Ordnerhierarchien zum Partitionieren Ihrer Daten im Lake zu erstellen. Dies ist eine optimale Methode zum Organisieren und Verarbeiten von Daten im Lake und in Spark (die Compute-Engine hinter Datenflüssen). Es fallen jedoch geringe Leistungskosten an, um Ihre Ausgabe auf diese Weise zu organisieren. Mit diesem Mechanismus in der Senke wird eine geringfügige Verringerung der Gesamtleistung der Pipeline erwartet.

  1. Wechseln Sie zurück zum Datenfluss-Designer, und bearbeiten Sie den oben erstellten Datenfluss. Klicken Sie auf die Senkentransformation.
  2. Klicken Sie auf „Optimieren“ > „Partitionierung festlegen“ > „Schlüssel“.
  3. Wählen Sie die Spalte(n) aus, die Sie zum Festlegen Ihrer hierarchischen Ordnerstruktur verwenden möchten.
  4. Beachten Sie, dass im folgenden Beispiel Jahr und Monat als Spalten für die Ordnerbenennung verwendet werden. Das Ergebnis sind Ordner in der Form releaseyear=1990/month=8.
  5. Wenn Sie auf die Datenpartitionen in einer Datenflussquelle zugreifen, zeigen Sie nur auf den Ordner der obersten Ebene oberhalb von releaseyear und verwenden ein Platzhaltermuster für jeden nachfolgenden Ordner. Beispiel: **/**/*.parquet
  6. Wenn Sie die Datenwerte bearbeiten möchten oder synthetische Werte für Ordnernamen generiert werden müssen, verwenden Sie die Transformation für abgeleitete Spalten, um die Werte zu erstellen, die Sie in Ihren Ordnernamen verwenden möchten.

Key partitioning

Name folder as data values (Ordnername aus Datenwerten)

Eine etwas leistungsstärkere Senkentechnik für Lake Data mithilfe von ADLS Gen2, die nicht den gleichen Vorteil wie die Schlüssel-Wert-Partitionierung bietet, ist Name folder as column data. Während der Schlüsselpartitionierungsstil der hierarchischen Struktur Ihnen die Verarbeitung von Datenslices erleichtert, handelt es sich bei dieser Technik um eine vereinfachte Ordnerstruktur, mit der Daten schneller geschrieben werden können.

  1. Wechseln Sie zurück zum Datenfluss-Designer, und bearbeiten Sie den oben erstellten Datenfluss. Klicken Sie auf die Senkentransformation.
  2. Klicken Sie auf „Optimieren“ > „Partitionierung festlegen“ > „Aktuelle Partitionierung verwenden“.
  3. Klicken Sie auf „Einstellungen“ > „Ordnername aus Spaltendaten“.
  4. Wählen Sie die Spalte aus, die Sie zum Generieren von Ordnernamen verwenden möchten.
  5. Wenn Sie die Datenwerte bearbeiten möchten oder synthetische Werte für Ordnernamen generiert werden müssen, verwenden Sie die Transformation für abgeleitete Spalten, um die Werte zu erstellen, die Sie in Ihren Ordnernamen verwenden möchten.

Folder option

Name file as data values (Dateiname aus Datenwerten)

Die in den obigen Tutorials aufgeführten Techniken sind gute Anwendungsfälle zum Erstellen von Ordnerkategorien in Ihrem Data Lake. Das standardmäßige Dateibenennungsschema, das von diesen Techniken verwendet wird, ist die Verwendung der Spark-Executor-Auftrags-ID. Manchmal möchten Sie möglicherweise den Namen der Ausgabedatei in einer Datenflusstextsenke festlegen. Diese Technik wird nur für die Verwendung mit kleinen Dateien empfohlen. Das Zusammenführen von Partitionsdateien in eine einzelne Ausgabedatei ist ein zeitintensiver Prozess.

  1. Wechseln Sie zurück zum Datenfluss-Designer, und bearbeiten Sie den oben erstellten Datenfluss. Klicken Sie auf die Senkentransformation.
  2. Klicken Sie auf „Optimieren“ > „Partitionierung festlegen“ > „Einzelne Partition“. Es ist diese Anforderung einer einzelnen Partition, die einen Engpass im Ausführungsprozess verursacht, wenn Dateien zusammengeführt werden. Diese Option wird nur für kleine Dateien empfohlen.
  3. Klicken Sie auf „Einstellungen“ > „Dateiname aus Spaltendaten“.
  4. Wählen Sie die Spalte aus, die Sie zum Generieren von Dateinamen verwenden möchten.
  5. Wenn Sie die Datenwerte bearbeiten möchten oder synthetische Werte für Dateinamen generiert werden müssen, verwenden Sie die Transformation für abgeleitete Spalten, um die Werte zu erstellen, die Sie in Ihren Dateinamen verwenden möchten.

Weitere Informationen zu Datenflusssenken