Partage via


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. Vous pouvez utiliser Azure Stream Analytics pour écrire directement des données de streaming dans vos tables Delta Lake sans écrire une seule ligne de code.

Un travail Stream Analytics 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 à haute vitesse vers les tables Delta en mode Append. Il fournit également une sémantique exactement une fois, qui garantit qu’aucune donnée n’est perdue ou dupliquée. L’ingestion de flux de données en temps réel à partir 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 Data Lake Storage Gen2. Le tableau suivant 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. 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. Consultez la section suivante pour en savoir plus.
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 string.

Pour afficher la liste complète de la configuration Data Lake Storage Gen2, consultez Vue d’ensemble d’Azure Data Lake Storage 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 Data Lake Storage Gen2.

Vous pouvez utiliser un ou plusieurs segments de chemin pour définir le chemin de la table Delta et son nom. 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 concernant le nom du chemin Delta sont les suivantes :

  • Les noms de champs ne respectent pas la casse. Par exemple, le service ne peut distinguer la colonne ID de la colonne id.
  • Aucun nom {field} dynamique n’est autorisé. Par exemple, {ID} est traité en tant que texte {ID}.
  • Le nombre de segments de chemin qui composent le nom ne peut pas dépasser 254.

Exemples

Exemples pour un nom de chemin 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 de répertoire est WestEurope/CA/factory1 et le nom du dossier de table Delta est device-table.
  2. Sous le conteneur choisi, le chemin de répertoire est Test et le nom du dossier de table Delta est demo.
  3. Sous le conteneur choisi, le nom du dossier de table Delta est mytable.

Créer une table

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

Écrire dans la table

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

Remise exactement une fois

Le journal des transactions permet à Delta Lake de garantir un seul traitement. Stream Analytics fournit également une remise exactement une fois lors de la sortie des données vers 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, afin de 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 streaming, ceci est considéré comme une instance d’échec de conversion du schéma. Il ne s’agit pas du seul cas considéré 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 de journal Delta

Le travail Stream Analytics crée régulièrement des points de contrôle de journal Delta au format V1. Les points de contrôle de journal Delta sont des captures instantanées de la table Delta, qui 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 Delta) n’est pas prise en charge.
  • Les colonnes de partition multiples ne sont pas prises en charge. Si vous souhaitez plusieurs colonnes de partition, nous vous recommandons d’utiliser une clé composite dans la requête, puis de 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 lot unique, 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.