Comprendre les différences entre les formats de données U-SQL et Spark

Important

Azure Data Lake Analytics mis hors service le 29 février 2024. Découvrez-en plus avec cette annonce.

Pour l’analytique des données, votre organization peut utiliser Azure Synapse Analytics ou Microsoft Fabric.

Si vous souhaitez utiliser Azure Databricks ou Azure HDInsight Spark, nous vous recommandons de migrer vos données d’Azure Data Lake Storage Gen1 vers Azure Data Lake Storage Gen2.

En plus de déplacer vos fichiers, vous souhaiterez également rendre vos données, stockées dans des tables U-SQL, accessibles à Spark.

Déplacer des données stockées dans des fichiers Azure Data Lake Storage Gen1

Les données stockées dans des fichiers peuvent être déplacées de différentes manières :

Nous vous recommandons de consulter l’article Mettre à niveau vos solutions d’analytique de Big Data d’Azure Data Lake Storage Gen1 vers Azure Data Lake Storage Gen2

Déplacer des données stockées dans des tables U-SQL

Les tables U-SQL ne sont pas comprises par Spark. Si vous disposez de données stockées dans des tables U-SQL, vous exécuterez un travail U-SQL qui extrait les données de la table et les enregistre dans un format reconnu par Spark. Le format le plus approprié consiste à créer un jeu de fichiers Parquet suivant la disposition de dossier du metastore Hive.

La sortie peut être obtenue en U-SQL avec le générateur de sortie Parquet intégré et à l’aide du partitionnement de sortie dynamique avec des jeux de fichiers pour créer les dossiers de partition. Traiter plus de fichiers que jamais et utiliser parquet fournit un exemple de création de ces données Spark consommables.

Après cette transformation, vous copiez les données comme indiqué dans le chapitre Déplacer des données stockées dans des fichiers Azure Data Lake Storage Gen1.

Mises en garde

  • Sémantique des données - Lorsque vous copiez des fichiers, la copie s’exécute au niveau de l’octet. Ainsi, les mêmes données doivent apparaître dans le compte Azure Data Lake Storage Gen2. Notez toutefois que Spark peut interpréter certains caractères différemment. Par exemple, il peut utiliser une valeur par défaut différente pour un séparateur de lignes dans un fichier CSV. En outre, si vous copiez des données typées (à partir de tables), Parquet et Spark peuvent avoir une précision et une échelle différentes pour certaines des valeurs typées (par exemple, float) et peuvent traiter les valeurs Null différemment. Par exemple, U-SQL comprend la sémantique C# pour les valeurs Null, tandis que Spark comprend une logique à trois valeurs pour les valeurs Null.

  • Les tables U-SQL d’organisation des données (partitionnement) fournissent un partitionnement à deux niveaux. Le niveau externe (PARTITIONED BY) est par valeur et mappe principalement dans le schéma de partitionnement Hive/Spark à l’aide de hiérarchies de dossiers. Vous devez vous assurer que les valeurs null sont mappées au dossier approprié. Le niveau interne (DISTRIBUTED BY) dans U-SQL offre quatre schémas de distribution : tourniquet, plage, hachage et hachage direct. Les tables Hive/Spark prennent uniquement en charge le partitionnement de valeur ou le partitionnement de hachage, à l’aide d’une fonction de hachage différente de U-SQL. Lorsque vous sortez vos données de table U-SQL, vous ne pourrez probablement mapper que dans le partitionnement des valeurs pour Spark et vous devrez peut-être effectuer un paramétrage supplémentaire de la disposition de vos données en fonction de vos requêtes Spark finales.

Étapes suivantes