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:
- Napište kanál Azure Data Factory, který zkopíruje data z účtu Azure Data Lake Storage Gen1 do účtu Azure Data Lake Storage Gen2.
- Napište úlohu Sparku, která načte data z účtu Azure Data Lake Storage Gen1 a zapíše je do účtu Azure Data Lake Storage Gen2. Pokud nepotřebujete zachovat původní formát souboru, můžete ho na základě případu použití napsat v jiném formátu, například Parquet.
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
- Principy konceptů kódu Sparku pro vývojáře U-SQL
- Upgradujte svá řešení pro analýzu velkých objemů dat z Azure Data Lake Storage Gen1 na Azure Data Lake Storage Gen2
- .NET pro Apache Spark
- Transformace dat pomocí aktivity Sparku v Azure Data Factory
- Transformace dat pomocí aktivity Hadoop Hive v Azure Data Factory
- Co je Apache Spark ve službě Azure HDInsight