Freigeben über


Grundlegendes zu den Unterschieden zwischen U-SQL- und Spark-Datenformaten

Wichtig

Azure Data Lake Analytics wurde am 29. Februar 2024 eingestellt. Erfahren Sie mehr mit dieser Ankündigung.

Bei Datenanalysen kann Ihre Organisation Azure Synapse Analytics oder Microsoft Fabricverwenden.

Wenn Sie Azure Databricks oder Azure HDInsight Spark verwenden möchten, empfehlen wir Ihnen, Ihre Daten aus Azure Data Lake Storage Gen1 zu Azure Data Lake Storage Gen2 zu migrieren.

Zusätzlich zum Verschieben Ihrer Dateien möchten Sie auch Ihre Daten, die in U-SQL-Tabellen gespeichert sind, für Spark zugänglich machen.

Verschieben von Daten, die in Azure Data Lake Storage Gen1-Dateien gespeichert sind

In Dateien gespeicherte Daten können auf verschiedene Arten verschoben werden:

Es wird empfohlen, den Artikel Upgrade Ihrer Big Data Analytics-Lösungen von Azure Data Lake Storage Gen1 auf Azure Data Lake Storage Gen2 zu überprüfen.

Verschieben von Daten, die in U-SQL-Tabellen gespeichert sind

U-SQL-Tabellen werden von Spark nicht verstanden. Wenn Daten in U-SQL-Tabellen gespeichert sind, führen Sie einen U-SQL-Auftrag aus, der die Tabellendaten extrahiert und in einem Format speichert, das Spark versteht. Das am besten geeignete Format besteht darin, eine Reihe von Parquet-Dateien gemäß dem Ordnerlayout des Hive-Metastores zu erstellen.

Die Ausgabe kann in U-SQL mit dem integrierten Parquet-Outputter und der dynamischen Ausgabepartitionierung unter Verwendung von Dateisätzen zum Erstellen der Partitionsordner erreicht werden. Verarbeiten Sie mehr Dateien als je zuvor und verwenden Sie Parquet, um ein Beispiel dafür zu geben, wie man solche von Spark nutzbare Daten erstellt.

Nach dieser Transformation kopieren Sie die Daten wie im Kapitel "Verschieben von Daten, die in Azure Data Lake Storage Gen1-Dateien gespeichert sind" beschrieben.

Vorbehalte

  • Datensemantik Beim Kopieren von Dateien erfolgt die Kopie auf Byteebene. Daher sollten dieselben Daten im Azure Data Lake Storage Gen2-Konto angezeigt werden. Beachten Sie jedoch, dass Spark einige Zeichen unterschiedlich interpretiert. Beispielsweise kann es für ein Zeilentrennzeichen in einer CSV-Datei einen anderen Standardwert verwenden. Wenn Sie typisierte Daten (aus Tabellen) kopieren, können "Parquet" und "Spark" für einige der typisierten Werte (z. B. eine Gleitkommazahl) unterschiedliche Präzision und Skalierung aufweisen und möglicherweise Nullwerte unterschiedlich behandeln. U-SQL verfügt z. B. über die C#-Semantik für Nullwerte, während Spark eine dreiwertige Logik für Nullwerte aufweist.

  • Datenorganisation (Partitionierung) U-SQL-Tabellen bieten zwei Ebenen Partitionierung. Die äußere Ebene (PARTITIONED BY) erfolgt nach Wert und wird hauptsächlich mithilfe von Ordnerhierarchien dem Hive/Spark-Partitionierungsschema zugeordnet. Sie müssen sicherstellen, dass die Nullwerte dem richtigen Ordner zugeordnet sind. Die innere Ebene (DISTRIBUTED BY) in U-SQL bietet vier Verteilungsschemas: Roundrobin, Bereich, Hash und direkter Hash. Hive-/Spark-Tabellen unterstützen nur die Wertpartitionierung oder die Hashpartitionierung, wobei eine andere Hashfunktion als bei U-SQL verwendet wird. Wenn Sie Ihre U-SQL-Tabellendaten ausgeben, können Sie wahrscheinlich nur die Wertpartitionierung für Spark zuordnen und je nach den endgültigen Spark-Abfragen möglicherweise weitere Optimierungen des Datenlayouts vornehmen.

Nächste Schritte