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

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

Kromě přesunu souborů budete také chtít vytvořit data uložená v tabulkách U-SQL, která jsou dostupná pro Spark.

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

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

Doporučujeme vám projít si č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

Pomocí Sparku nerozumíme 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ý Spark zná. Nejvhodnější formát je vytvořit sadu souborů Parquet po rozložení složky metastore Hive.

Výstup je možné dosáhnout v U-SQL s integrovaným Parquetm pro výstup a použití dynamického výstupu do oddílů se sadami souborů k vytvoření složek oddílu. Zpracování více souborů než kdy dřív a použití Parquet poskytuje příklad, jak vytvořit taková spotřební data Sparku.

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

Upozornění

  • Sémantika dat při kopírování souborů dojde k kopírování na úrovni bajtů. Takže by se stejná data měla zobrazovat v účtu Azure Data Lake Storage Gen2 . Poznámka: Spark ale může interpretovat některé znaky odlišně. Například může použít jinou výchozí hodnotu pro oddělovač řádků v souboru CSV. Kromě toho, pokud kopírujete zadaná data (z tabulek), pak Parquet a Spark mohou mít různou přesnost a měřítko pro některé ze zadaných hodnot (například float) a mohou považovat hodnoty null jinak. Například U-SQL má sémantiku jazyka C# pro hodnoty null, zatímco Spark má pro hodnoty null logiku se třemi hodnotami.

  • Datové organizace (dělení) tabulek U-SQL poskytují dva oddíly na úrovni. Vnější úroveň ( PARTITIONED BY ) je podle hodnoty a mapuje se většinou do schématu dělení na oddíly/Spark pomocí hierarchií složek. Bude nutné zajistit, aby hodnoty null byly namapovány na správnou složku. Vnitřní úroveň ( DISTRIBUTED BY ) v u-SQL nabízí 4 distribuční schémata: kruhové dotazování, rozsah, hodnota hash a přímá hodnota hash. Tabulky podregistru/Spark podporují pouze dělení hodnot nebo dělení hodnot hash s použitím jiné funkce hash než U-SQL. Když vytváříte výstup dat tabulky U-SQL, pravděpodobně bude možné mapovat pouze na dělení hodnoty pro Spark a může být nutné provést další ladění rozložení dat v závislosti na finálních dotazech Sparku.

Další kroky