Azure Stream Analytics - Écriture dans une table Delta Lake

Delta Lake est un format ouvert qui apporte fiabilité, qualité et performances aux lacs de données. Azure Stream Analytics vous permet d’écrire directement des données de diffusion en continu dans vos tables Delta Lake sans écrire une seule ligne de code.

Un travail d’analyse de flux de données peut être configuré pour écrire au travers d’un connecteur de sortie Delta Lake natif dans une table Delta nouvelle ou pré-créée dans un compte Azure Data Lake Storage Gen2. Ce connecteur est optimisé pour l’ingestion à grande vitesse dans des tables Delta en mode ajout, et fournit une seule fois la sémantique, ce qui garantit qu’aucune donnée n’est perdue ou dupliquée. L’ingestion de flux de données en temps réel d’Azure Event Hubs dans des tables Delta vous permet d’effectuer des analyses interactives ad hoc ou par lots.

Configuration de Delta Lake

Pour écrire des données dans Delta Lake, vous devez vous connecter à un compte Azure Data Lake Storage Gen2. Le tableau ci-dessous répertorie les propriétés liées à la configuration de Delta Lake.

Nom de la propriété Description
Format de sérialisation de l’événement Format de sérialisation pour les données de sortie. Les formats JSON, CSV, AVRO et Parquet sont pris en charge. Delta Lake est répertorié comme option ici. Les données sont au format Parquet si Delta Lake est sélectionné.
Nom du chemin d’accès Delta Chemin utilisé pour écrire votre table Delta Lake dans le conteneur spécifié. Il inclut le nom de la table. Pour plus d’informations, consultez la section suivante.
Colonne de partition facultatif. Nom {field} de vos données de sortie à partitionner. Une seule colonne de partition est prise en charge. La valeur de la colonne doit être de type chaîne

Pour afficher la liste complète de la configuration ADLS Gen2, consultez Vue d’ensemble d’ALDS Gen2.

Nom du chemin d’accès Delta

Le nom du chemin d’accès Delta est utilisé pour spécifier l’emplacement et le nom de votre table Delta Lake stockée dans Azure Data Lake Storage Gen2.

Vous pouvez choisir d’utiliser un ou plusieurs segments de chemin pour définir le chemin d’accès à la table Delta et le nom de celle-ci. Un segment de chemin d’accès représente la chaîne située entre des caractères délimiteurs consécutifs (par exemple, la barre oblique /) qui correspond au nom d’un répertoire virtuel.

Le nom du segment est alphanumérique et peut inclure des espaces, des traits d’union et des traits de soulignement. Le dernier segment de ligne sert de nom de table.

Les restrictions relatives au nom du chemin d’accès Delta sont les suivantes :

  • Les noms de champs ne sont pas sensibles à la casse. Par exemple, le service ne peut distinguer la colonne ID de la colonne id.
  • Aucun nom {champ} dynamique n’est autorisé. Par exemple, {ID} est traité en tant que texte {ID}.
  • Le nombre de segments de chemin d’accès composant le nom ne peut pas dépasser 254.

Exemples

Exemples pour le nom du chemin d’accès Delta :

  • Exemple 1 : WestUS/CA/factory1/device-table
  • Exemple 2 : Test/demo
  • Exemple 3 : mytable

Exemples de fichier de sortie :

  1. Sous le conteneur choisi, le chemin d’accès au répertoire serait WestEurope/CA/factory1 et le nom du dossier de table Delta serait device-table.
  2. Sous le conteneur choisi, le chemin d’accès au répertoire serait Test et le nom du dossier de table Delta serait demo.
  3. Sous le conteneur choisi, le nom du dossier de table Delta serait mytable.

Création d’une nouvelle table

S’il n’existe pas encore de table Delta Lake portant le même nom et dans l’emplacement spécifié par le nom du chemin d’accès Delta, Azure Stream Analytics crée une table Delta par défaut. Cette nouvelle table est créée avec la configuration suivante :

Écriture dans la table

S’il existe déjà une table Delta Lake du même nom et dans l’emplacement spécifié par le nom du chemin d’accès Delta, par défaut, Azure Stream Analytics écrit les nouveaux enregistrements dans la table existante.

Une seule livraison

Le journal des transactions permet à Delta Lake de garantir un seul traitement. Azure Stream Analytics fournit également une seule livraison lors de la sortie des données vers Azure Data Lake Storage Gen2 pendant une exécution de travail unique.

Application du schéma

L’application du schéma signifie que toutes les nouvelles écritures dans une table sont appliquées pour être compatibles avec le schéma de la table cible au moment de l’écriture, pour garantir la qualité des données.

Tous les enregistrements de données de sortie sont projetés dans le schéma de la table existante. Si la sortie est écrite dans une nouvelle table Delta, le schéma de table est créé avec le premier enregistrement. Si les données entrantes comportent une colonne supplémentaire par rapport au schéma de table existant, elles sont écrites dans la table sans colonne supplémentaire. S’il manque une colonne dans les données entrantes par rapport au schéma de table existant, elles sont écrites dans la table avec la colonne nulle.

S’il n’existe aucune intersection entre le schéma de la table Delta et le schéma d’un enregistrement du travail de diffusion en continu, c’est considéré comme une instance d’échec de conversion du schéma. Il ne s’agit pas du seul cas à considérer comme un échec de conversion de schéma.

En cas d’échec de la conversion de schéma, le comportement du travail suit la stratégie de gestion d’erreur de données de sortie configurée au niveau du travail.

Points de contrôle Delta Log

Le travail Stream Analytics crée régulièrement des points de contrôle Delta Log au format V1. Les points de contrôle Delta Log sont des captures instantanées de la table Delta et contiennent généralement le nom du fichier de données généré par le travail Stream Analytics. Un nombre volumineux de fichiers de données entraîne des points de contrôle volumineux, ce qui peut occasionner des problèmes de mémoire dans le travail Stream Analytics.

Limites

  • La clé de partition dynamique (spécifiant le nom d’une colonne du schéma d’enregistrement dans le chemin d’accès Delta) n’est pas prise en charge.
  • Les colonnes de partition multiples ne sont pas prises en charge. Si plusieurs colonnes de partition sont souhaitées, la recommandation consiste à utiliser une clé composite dans la requête, puis à la spécifier comme colonne de partition.
    • Une clé composite peut être créée dans la requête, par exemple : « SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input] ».
  • L’écriture dans Delta Lake est en ajout uniquement.
  • La vérification du schéma dans les tests de requête n’est pas disponible.
  • Le compactage des petits fichiers n’est pas effectué par Stream Analytics.
  • Tous les fichiers de données sont créés sans compression.
  • Les types Date et Decimal ne sont pas pris en charge.
  • L’écriture dans des tables existantes de Writer Version 7 (ou une version ultérieure) avec des fonctionnalités d’écriture échoue.
  • Lorsqu’un travail Stream Analytics écrit un lot de données dans un Delta Lake, il peut générer plusieurs actions Ajouter un fichier. Lorsqu’un trop grand nombre d’actions Ajouter un fichier sont générées pour un seul lot, un travail Stream Analytics peut être bloqué.
  • Les travaux Stream Analytics peuvent uniquement lire et écrire des points de contrôle V1 à partie unique. Les points de contrôle à plusieurs parties et le format de point de contrôle V2 ne sont pas pris en charge.

Étapes suivantes