Sdílet prostřednictvím


Vysvětlení rozdílů mezi datovými formáty U-SQL a Spark

Důležité

Azure Data Lake Analytics vyřazena 29. února 2024. Další informace najdete v tomto oznámení.

Pro analýzu dat může vaše organizace používat Azure Synapse Analytics nebo Microsoft Fabric.

Pokud chcete použít Azure Databricks nebo Azure HDInsight Spark, doporučujeme migrovat data z Azure Data Lake Storage Gen1 do Azure Data Lake Storage Gen2.

Kromě přesouvání souborů budete také chtít, aby vaše data uložená v tabulkách U-SQL byla přístupná pro Spark.

Přesun dat uložených v souborech Azure Data Lake Storage Gen1

Data uložená v souborech se dají přesouvat různými způsoby:

Doporučujeme, abyste si prostudovali článek Upgrade řešení pro analýzu velkých objemů dat z Azure Data Lake Storage Gen1 na Azure Data Lake Storage Gen2

Přesun dat uložených v tabulkách U-SQL

Spark nerozumí tabulkám U-SQL. Pokud máte data uložená v tabulkách U-SQL, spustíte úlohu U-SQL, která extrahuje data tabulky a uloží je ve formátu, kterému Spark rozumí. Nejvhodnějším formátem je vytvořit sadu souborů Parquet podle rozložení složky metastoru Hive.

Výstup lze dosáhnout v U-SQL pomocí integrovaného výstupního modulu Parquet a pomocí dynamického dělení výstupu se sadami souborů k vytvoření složek oddílů. Zpracování více souborů než kdy dřív a použití Parquet poskytuje příklad, jak vytvořit taková spotřebová data Sparku.

Po této transformaci zkopírujete data, jak je popsáno v kapitole Přesun dat uložených v souborech Azure Data Lake Storage Gen1.

Upozornění

  • Sémantika dat Při kopírování souborů dojde k kopírování na úrovni bajtů. V účtu Azure Data Lake Storage Gen2 by se proto měla zobrazovat stejná data. Všimněte si ale, že Spark může interpretovat některé znaky odlišně. Může například použít jiné výchozí nastavení pro oddělovač řádků v souboru CSV. Pokud navíc kopírujete data typu (z tabulek), můžou mít Parquet a Spark u některých zadaných hodnot různou přesnost a měřítko (například float) a můžou zacházet s hodnotami null odlišně. Například U-SQL má sémantiku jazyka C# pro hodnoty null, zatímco Spark má logiku se třemi hodnotami pro hodnoty null.

  • Tabulky U-SQL pro uspořádání dat (dělení) poskytují dělení na dvě úrovně. Vnější úroveň (PARTITIONED BY) je podle hodnoty a mapuje se většinou do schématu dělení Hive/Spark pomocí hierarchií složek. Budete muset zajistit, aby hodnoty null byly namapovány na správnou složku. Vnitřní úroveň (DISTRIBUTED BY) v U-SQL nabízí čtyři schémata distribuce: kruhové dotazování, rozsah, hash a přímá hodnota hash. Tabulky Hive a Spark podporují pouze dělení hodnot nebo dělení hash pomocí jiné funkce hash než U-SQL. Při výstupu dat tabulky U-SQL budete pravděpodobně moct namapovat pouze na dělení hodnot pro Spark a možná budete muset v závislosti na konečných dotazech Sparku provést další ladění rozložení dat.

Další kroky