Modèle de programmation pour Apache Beam

Apache Beam est un modèle unifié Open Source permettant de définir des pipelines de traitement parallèle des données par lots et en streaming. Le modèle de programmation Apache Beam simplifie la mécanique de traitement de données à grande échelle. À l'aide de l'un des SDK Apache Beam, vous créez un programme qui définit le pipeline. Ensuite, l'un des backends de traitement distribué compatibles d'Apache Beam, tel que Cloud Dataflow, exécute le pipeline. Ce modèle vous permet de vous concentrer sur la construction logique de votre tâche de traitement de données plutôt que sur l'orchestration physique du traitement parallèle. Vous pouvez vous concentrer sur ce que votre tâche doit accomplir plutôt que sur la manière exacte dont cette tâche est exécutée.

Le modèle Apache Beam fournit des abstractions utiles qui vous isolent des détails de bas niveau du traitement distribué, tels que la coordination des nœuds de calcul, la partition des ensembles de données et d'autres tâches similaires. Cloud Dataflow gère entièrement ces détails de bas niveau.

Concepts

Cette section contient un résumé explicatif des concepts fondamentaux. Sur le site Web Apache Beam, le guide de programmation d'Apache Beam vous décrit les concepts de base de la création de pipelines à l'aide des SDK Apache Beam.

Concepts fondamentaux

Pipelines
Un pipeline encapsule toute la série de calculs nécessaires à la lecture des données d'entrée, à la transformation de ces données et à l'écriture des données de sortie. La source d'entrée et le récepteur de sortie peuvent être du même type ou de types différents, ce qui vous permet de convertir les données d'un format à un autre. Les programmes Apache Beam commencent par construire un objet Pipeline, puis utilisent cet objet comme base pour créer les ensembles de données du pipeline. Chaque pipeline représente une seule tâche pouvant être répétée.
PCollection
Une PCollection représente un ensemble de données multi-éléments qui peut être distribué et qui agit en tant que données du pipeline. Les transformations Apache Beam utilisent des objets PCollection comme entrées et sorties pour chaque étape de votre pipeline. Une PCollection peut contenir un ensemble de données d'une taille fixe ou un ensemble de données illimité provenant d'une source de données constamment mise à jour.
Transformations
Une transformation représente une opération de traitement qui transforme les données. Une transformation utilise une ou plusieurs PCollections en entrée, effectue une opération que vous spécifiez sur chaque élément de cette collection et génère une ou plusieurs PCollections en sortie. Une transformation peut effectuer quasiment tout type de traitement, y compris effectuer des calculs mathématiques sur des données, convertir des données d'un format à un autre, regrouper des données, lire et écrire des données, filtrer des données pour en extraire certains éléments, ou encore combiner des éléments de données en valeurs uniques.
ParDo
ParDo est l'opération de traitement parallèle principale dans les SDK Apache Beam. Elle appelle une fonction spécifiée par l'utilisateur sur chacun des éléments de la PCollection d'entrée. ParDo collecte les éléments de sortie (quel que soit leur nombre, même s'il n'y en a aucun) dans une PCollection de sortie. La transformation ParDo traite les éléments indépendamment, et éventuellement en parallèle.
E/S de pipeline
Les connecteurs d'E/S Apache Beam vous permettent de lire des données dans votre pipeline et d'écrire des données de sortie à partir de votre pipeline. Un connecteur d'E/S se compose d'une source et d'un récepteur. Toutes les sources et tous les récepteurs Apache Beam sont des transformations qui permettent à votre pipeline d'utiliser des données provenant de différents formats de stockage de données. Vous pouvez également écrire un connecteur d'E/S personnalisé.
Agrégation
L'agrégation est le processus consistant à calculer une valeur à partir de plusieurs éléments d'entrée. Le modèle de calcul principal pour l'agrégation dans Apache Beam consiste à regrouper tous les éléments avec une clé et une fenêtre communes. Ensuite, il combine chaque groupe d'éléments grâce à une opération associative et commutative.
Fonctions définies par l'utilisateur
Certaines opérations dans Apache Beam permettent d'exécuter du code défini par l'utilisateur afin de configurer la transformation. Pour ParDo, le code défini par l'utilisateur spécifie l'opération à appliquer à chaque élément, et pour Combine, il indique comment combiner les valeurs. Un pipeline peut contenir des fonctions définies par l'utilisateur écrites dans un langage différent de celui de votre exécuteur. Un pipeline peut également contenir des fonctions définies par l'utilisateur écrites dans plusieurs langages.
Exécuteur
L'exécuteur est le logiciel qui accepte un pipeline et l'exécute. La plupart des exécuteurs sont des convertisseurs ou des adaptateurs de systèmes de traitement de big data massivement parallèle. D'autres exécuteurs existent pour les tests et le débogage en local.

Concepts avancés

Heure de l'événement
Heure à laquelle un événement de données se produit, déterminée par l'horodatage de l'élément de données lui-même. Elle est différente de l'heure à laquelle l'élément de données réel est traité à n'importe quelle étape du pipeline.
Fenêtrage
Le fenêtrage permet de regrouper des opérations sur des collections illimitées en les divisant en fenêtres de collections finies en fonction de l'horodatage des différents éléments. Une fonction de fenêtrage indique à l'exécuteur comment affecter des éléments à une fenêtre initiale et comment fusionner des fenêtres d'éléments groupés. Apache Beam vous permet de définir différents types de fenêtres ou d'utiliser les fonctions de fenêtrage prédéfinies.
Filigranes
Apache Beam suit un filigrane, qui est la notion du système qui permet de prévoir que toutes les données d'une fenêtre spécifique sont arrivées dans le pipeline. Apache Beam suit un filigrane car il n'est pas garanti que les données parviennent dans un pipeline dans l'ordre chronologique ou à des intervalles prévisibles. De plus, rien ne certifie que les événements de données apparaîtront dans le pipeline dans leur ordre de génération.
Déclencheur
Les déclencheurs déterminent à quel moment émettre les résultats agrégés à l'arrivée des données. Pour les données limitées, les résultats sont émis une fois que toutes les entrées ont été traitées. Pour les données illimitées, les résultats sont émis lorsque le filigrane dépasse la fin de la fenêtre, indiquant ainsi que le système estime que toutes les données d'entrée pour cette fenêtre ont été traitées. Apache Beam fournit plusieurs déclencheurs prédéfinis et vous permet de les combiner.

Étape suivante

Pour obtenir des explications détaillées, consultez le guide de programmation d'Apache Beam sur le site Web Apache Beam.

Apache Beam est une marque commerciale d'Apache Software Foundation ou de ses filiales aux États-Unis et/ou dans d'autres pays.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.