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

Wichtig

Azure Data Lake Analytics am 29. Februar 2024 eingestellt. In dieser Ankündigung erhalten Sie weitere Informationen.

Für Datenanalysen kann Ihr organization Azure Synapse Analytics oder Microsoft Fabric verwenden.

Wenn Sie Azure Databricks oder Azure HDInsight Spark verwenden möchten, empfiehlt es sich, Ihre Daten von Azure Data Lake Storage Gen1 zu Azure Data Lake Storage Gen2 zu migrieren.

Zusätzlich zum Verschieben der Dateien sollten Sie die in U-SQL-Tabellen gespeicherten Daten für Spark verfügbar machen.

Verschieben von in Azure Data Lake Storage Gen1-Dateien gespeicherten Dateien

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

Es empfiehlt sich, den Artikel Upgrade von Big Data-Analyselösungen von Azure Data Lake Storage Gen1 auf Azure Data Lake Storage Gen2 zu lesen.

Verschieben von in U-SQL-Tabellen gespeicherten Daten

U-SQL-Tabellen werden von Spark nicht verstanden. Wenn Sie Daten in U-SQL-Tabellen gespeichert haben, führen Sie einen U-SQL-Auftrag aus, mit dem die Tabellendaten extrahiert und in einem Format gespeichert werden, das in Spark erkannt wird. Am besten eignet sich das Erstellen einer Gruppe von Parquet-Dateien entsprechend dem Ordnerlayout des Hive-Metastores.

Die Ausgabe kann in U-SQL mit dem integrierten Parquet-Outputter und mithilfe der dynamischen Ausgabepartitionierung mit Dateigruppen zum Erstellen der Partitionsordner erreicht werden. Unter Process more files than ever and use Parquet (Verarbeiten größerer Datenmengen durch Verwendung von Parquet) finden Sie ein Beispiel zum Erstellen dieser in Spark nutzbaren Daten.

Nach dieser Transformation kopieren Sie die Daten entsprechend der Beschreibung im Abschnitt Verschieben von in Azure Data Lake Storage Gen1-Dateien gespeicherten Dateien.

Vorbehalte

  • Datensemantik: Beim Kopieren von Dateien erfolgt der Kopiervorgang auf Byteebene. Daher sollten die gleichen Daten im Azure Data Lake Storage Gen2-Konto angezeigt werden. Beachten Sie jedoch, dass einige Zeichen in Spark unterschiedlich interpretiert werden können. Beispielsweise kann in einer CSV-Datei ein anderer Standardwert für ein Zeilentrennzeichen verwendet werden. Wenn Sie typisierte Daten (aus Tabellen) kopieren, können in Parquet und Spark außerdem möglicherweise eine unterschiedliche Genauigkeit und Anzahl der Dezimalstellen für einige der typisierten Werte festgelegt sein (z. B. ein Gleitkommawert) und NULL-Werte unterschiedlich verarbeitet werden. In U-SQL wird z. B. die C#-Semantik für NULL-Werte verwendet, in Spark dagegen eine dreiwertige Logik.

  • Datenorganisation (Partitionierung): U-SQL-Tabellen umfassen eine zweistufige Partitionierung. Die äußere Ebene (PARTITIONED BY) ist nach Wert definiert und wird größtenteils dem Hive/Spark-Partitionsschema zugeordnet. Sie müssen sicherstellen, dass die NULL-Werte 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 Wert- 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 der Wertpartitionierung für Spark zugeordnet werden und müssen möglicherweise je nach Ihren endgültigen Spark-Abfragen eine weitere Optimierung Ihres Datenlayouts durchführen.

Nächste Schritte