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:
- Napíšete kanál Azure Data Factory ke zkopírování dat z Azure Data Lake Storage Gen1 účtu 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 ji do účtu Azure Data Lake Storage Gen2 . V závislosti na vašem případu použití ho můžete chtít zapsat v jiném formátu, jako je například Parquet, pokud nepotřebujete zachovat formát původního souboru.
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
- Principy konceptů kódu Spark pro vývojáře U-SQL
- Upgradujte ř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
- Transformuje data pomocí aktivity Sparku v Azure Data Factory
- Transformuje data pomocí aktivity podregistru Hadoop v Azure Data Factory
- Co je Apache Spark ve službě Azure HDInsight