Udostępnij za pośrednictwem


Omówienie różnic między formatami danych U-SQL i Spark

Ważne

Usługa Azure Data Lake Analytics została wycofana 29 lutego 2024 r. Dowiedz się więcej z tym ogłoszeniem.

Na potrzeby analizy danych organizacja może używać usługi Azure Synapse Analytics lub microsoft fabric.

Jeśli chcesz użyć usługi Azure Databricks lub usługi Azure HDInsight Spark, zalecamy przeprowadzenie migracji danych z usługi Azure Data Lake Storage Gen1 do usługi Azure Data Lake Storage Gen2.

Oprócz przenoszenia plików warto również udostępnić dane przechowywane w tabelach U-SQL platformy Spark.

Przenoszenie danych przechowywanych w plikach usługi Azure Data Lake Storage Gen1

Dane przechowywane w plikach można przenosić na różne sposoby:

Zalecamy zapoznanie się z artykułem Uaktualnianie rozwiązań do analizy danych big data z usługi Azure Data Lake Storage Gen1 do usługi Azure Data Lake Storage Gen2

Przenoszenie danych przechowywanych w tabelach U-SQL

Tabele U-SQL nie są zrozumiałe dla platformy Spark. Jeśli masz dane przechowywane w tabelach U-SQL, uruchomisz zadanie U-SQL, które wyodrębnia dane tabeli i zapisuje je w formacie zrozumiałym dla platformy Spark. Najbardziej odpowiednim formatem jest utworzenie zestawu plików Parquet zgodnie z układem folderu magazynu metadanych Hive.

Dane wyjściowe można uzyskać w języku U-SQL za pomocą wbudowanego modułu wyjściowego Parquet i dynamicznego partycjonowania danych wyjściowych z zestawami plików w celu utworzenia folderów partycji. przetwarzać więcej plików niż kiedykolwiek i używać Parquet zawiera przykład tworzenia danych do użytku dla platformy Spark.

Po wykonaniu tej transformacji skopiuj dane zgodnie z opisem w rozdziale Move data stored in Azure Data Lake Storage Gen1 files (Przenoszenie danych przechowywanych w plikach usługi Azure Data Lake Storage Gen1).

Zastrzeżenia

  • Semantyka danych Podczas kopiowania plików kopia zostanie wykonana na poziomie bajtów. Dlatego te same dane powinny być widoczne na koncie usługi Azure Data Lake Storage Gen2. Należy jednak pamiętać, że platforma Spark może interpretować niektóre znaki inaczej. Może na przykład użyć innej wartości domyślnej dla ogranicznika wiersza w pliku CSV. Ponadto jeśli kopiujesz typizowane dane (z tabel), to Parquet i Spark mogą mieć inną dokładność i skalę dla niektórych typizowanych wartości (na przykład float) oraz mogą traktować wartości null inaczej. Na przykład język U-SQL ma semantykę języka C# dla wartości null, podczas gdy platforma Spark ma trówartościową logikę dla wartości null.

  • Tabele U-SQL organizujące dane (partycjonowanie) zapewniają dwa poziomy partycjonowania. Poziom zewnętrzny (PARTITIONED BY) jest określony przez wartość i odwzorowany głównie w schemacie partycjonowania Hive/Spark przy użyciu hierarchii folderów. Należy upewnić się, że wartości null są mapowane do odpowiedniego folderu. Poziom wewnętrzny (DISTRIBUTED BY) w języku U-SQL oferuje cztery schematy dystrybucji: działanie okrężne, zakres, skrót i skrót bezpośredni. Tabele Hive/Spark obsługują tylko partycjonowanie wartości lub partycjonowanie skrótów przy użyciu innej funkcji skrótu niż U-SQL. Kiedy wyprowadzisz dane swojej tabeli U-SQL, prawdopodobnie będziesz mógł mapować tylko na partycjonowanie wartości dla Sparka i może być konieczne dalsze dostrajanie układu danych, w zależności od ostatecznych zapytań w Sparku.

Następne kroki