Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Dataflow est basé sur le projet Open Source Apache Beam. Ce document décrit le modèle de programmation Apache Beam.
Présentation
Apache Beam est un modèle unifié Open Source permettant de définir des pipelines par lot et par flux. 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. Vous exécutez ensuite le pipeline sur une plate-forme spécifique telle que Dataflow. 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 la gestion de l'orchestration du traitement parallèle.
Apache Beam vous isole des détails de bas niveau du traitement distribué, tels que la coordination des nœuds de calcul, la segmentation des ensembles de données et d'autres tâches du même type. Dataflow gère entièrement ces détails de bas niveau.
Un pipeline est un graphe de transformations appliqué à des collections de données. Dans Apache Beam, une collection est appelée PCollection et une transformation est appelée PTransform. Une PCollection peut être limitée ou illimitée.
Une PCollectionlimitée a une taille fixe et connue, et peut être traitée à l'aide d'un pipeline par lot. Les PCollections illimitées doivent utiliser un pipeline par flux, car les données sont traitées à mesure de leur arrivée.
Apache Beam fournit des connecteurs pour lire et écrire sur différents systèmes, y compris des services Google Cloud et des technologies tierces telles qu'Apache Kafka.
Le schéma suivant illustre un pipeline Apache Beam.
Vous pouvez écrire des PTransforms qui effectuent une logique arbitraire. Les SDK Apache Beam fournissent également une bibliothèque de PTransforms utiles et prêtes à l'emploi, telles que :
Filtrer tous les éléments qui ne respectent pas un prédicat.
Appliquer une fonction de mappage de type 1:1 sur chaque élément.
Regrouper les éléments par clé.
Compter les éléments d'une collection.
Compter les éléments associés à chaque clé d'une collection de clé-valeurs.
Pour exécuter un pipeline Apache Beam à l'aide de Dataflow, procédez comme suit :
Utilisez le SDK Apache Beam pour définir et créer le pipeline. Vous pouvez également déployer un pipeline prédéfini à l'aide d'un modèle Dataflow.
Utilisez Dataflow pour exécuter le pipeline. Dataflow alloue un pool de VM pour exécuter la tâche, déploie le code sur les VM et orchestre l'exécution de la tâche.
Dataflow effectue des optimisations sur le backend pour exécuter votre pipeline efficacement et tirer parti de la parallélisation.
Lorsqu'une tâche est en cours d'exécution et après qu'elle se termine, utilisez les fonctionnalités de gestion Dataflow pour surveiller la progression et résoudre les problèmes.
Concepts d'Apache Beam
Cette section contient un résumé explicatif des concepts fondamentaux.
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 PCollection 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 PCollection 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 en 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. La fonction définie par l'utilisateur pour un ParDo est appelée DoFn.
E/S 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 à l'aide d'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.
Source
Une transformation qui lit à partir d'un système de stockage externe. Un pipeline lit généralement les données d'entrée à partir d'une source. La source possède un type, qui peut être différent du type de récepteur. Vous pouvez donc modifier le format des données lors de leur passage dans le pipeline.
Récepteur
Une transformation qui écrit dans un système de stockage de données externe, tel qu'un fichier ou une base de données.
TextIO
Une fonction PTransform pour lire et écrire des fichiers texte. La source et le récepteur TextIO acceptent les fichiers compressés avec gzip et bzip2. La source d'entrée TextIO est compatible avec JSON. Vos données sources doivent toutefois être délimitées par un saut de ligne pour que le service Dataflow puisse paralléliser l'entrée et la sortie.
Vous pouvez utiliser une expression régulière pour cibler des fichiers spécifiques avec la source TextIO.
Dataflow est compatible avec les schémas généraux de caractères génériques. Votre expression glob peut apparaître n'importe où dans le chemin de fichier. Dataflow n'accepte toutefois pas les caractères génériques récursifs (**).
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 s'afficheront 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.
Étapes suivantes
Pour en savoir plus sur les concepts de base de la création de pipelines à l'aide des SDK Apache Beam, consultez le guide de programmation d'Apache Beam dans la documentation Apache Beam.
Apache Beam® est une marque déposée d'Apache Software Foundation ou de ses filiales aux États-Unis et/ou dans d'autres pays.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/18 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/08/18 (UTC)."],[[["\u003cp\u003eApache Beam is an open-source, unified model for defining both batch and streaming pipelines, simplifying large-scale data processing by allowing users to focus on the logic rather than managing parallel processing.\u003c/p\u003e\n"],["\u003cp\u003eApache Beam pipelines consist of \u003ccode\u003ePCollections\u003c/code\u003e (datasets) and \u003ccode\u003ePTransforms\u003c/code\u003e (operations), where \u003ccode\u003ePCollections\u003c/code\u003e can be bounded (fixed size) or unbounded (continuously updating), processed by batch or streaming pipelines, respectively.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eParDo\u003c/code\u003e is a core parallel processing operation, applying a user-defined function to each element in a \u003ccode\u003ePCollection\u003c/code\u003e, and Apache Beam provides I/O connectors to read data from various sources and write to different sinks, including Google Cloud services.\u003c/p\u003e\n"],["\u003cp\u003eWindowing enables grouping operations over unbounded collections by dividing them into finite windows based on timestamps, and watermarks track when all data in a window is expected, managing out-of-order or delayed data.\u003c/p\u003e\n"],["\u003cp\u003eDataflow can run Apache Beam pipelines, by managing the orchestration, deploying code to the necessary resources, and performing optimizations to make pipeline processing efficient.\u003c/p\u003e\n"]]],[],null,["\u003cbr /\u003e\n\nDataflow is based on the open-source Apache Beam project. This\ndocument describes the Apache Beam programming model.\n\nOverview\n\nApache Beam is an open source, unified model for defining both batch and\nstreaming pipelines. The Apache Beam programming model simplifies the\nmechanics of large-scale data processing. Using one of the Apache Beam SDKs,\nyou build a program that defines the pipeline. Then, you execute the pipeline\non a specific platform such as Dataflow. This model lets you\nconcentrate on the logical composition of your data processing job, rather than\nmanaging the orchestration of parallel processing.\n\nApache Beam insulates you from the low-level details of distributed\nprocessing, such as coordinating individual workers, sharding datasets, and\nother such tasks. Dataflow fully manages these low-level details.\n\nA *pipeline* is a graph of transformations that are applied to collections of\ndata. In Apache Beam, a collection is called a `PCollection`, and a\ntransform is called a `PTransform`. A `PCollection` can be bounded or unbounded.\nA *bounded* `PCollection` has a known, fixed size, and can be processed using a\nbatch pipeline. Unbounded `PCollections` must use a streaming pipeline, because\nthe data is processed as it arrives.\n\nApache Beam provides connectors to read from and write to different systems,\nincluding Google Cloud services and third-party technologies such as\nApache Kafka.\n\nThe following diagram shows an Apache Beam pipeline.\n\nYou can write `PTransforms` that perform arbitrary logic. The Apache Beam\nSDKs also provide a library of useful `PTransforms` out of the box, including\nthe following:\n\n- Filter out all elements that don't satisfy a predicate.\n- Apply a 1-to-1 mapping function over each element.\n- Group elements by key.\n- Count the elements in a collection\n- Count the elements associated with each key in a key-value collection.\n\nTo run an Apache Beam pipeline using Dataflow, perform the\nfollowing steps:\n\n1. Use the Apache Beam SDK to define and build the pipeline. Alternatively, you can deploy a prebuilt pipeline by using a Dataflow template.\n2. Use Dataflow to run the pipeline. Dataflow allocates a pool of VMs to run the job, deploys the code to the VMs, and orchestrates running the job.\n3. Dataflow performs optimizations on the backend to make your pipeline run efficiently and take advantage of parallelization.\n4. While a job is running and after it completes, use Dataflow management capabilities to monitor progress and troubleshoot.\n\nApache Beam concepts\n\nThis section contains summaries of fundamental concepts.\n\nBasic concepts\n\nPipelines\n: A pipeline encapsulates the entire series of computations that are involved in\n reading input data, transforming that data, and writing output data. The input\n source and output sink can be the same type or of different types, letting you\n convert data from one format to another. Apache Beam programs start by\n constructing a `Pipeline` object, and then using that object as the basis for\n creating the pipeline's datasets. Each pipeline represents a single, repeatable\n job.\n\nPCollection\n: A `PCollection` represents a potentially distributed, multi-element dataset that\n acts as the pipeline's data. Apache Beam transforms use\n `PCollection` objects as inputs and outputs for each step in your pipeline. A\n `PCollection` can hold a dataset of a fixed size or an unbounded dataset from a\n continuously updating data source.\n\nTransforms\n: A transform represents a processing operation that transforms data. A\n transform takes one or more `PCollection`s as input, performs an operation that\n you specify on each element in that collection, and produces one or more\n `PCollection`s as output. A transform can perform nearly any kind of processing\n operation, including performing mathematical computations on data, converting\n data from one format to another, grouping data together, reading and writing\n data, filtering data to output only the elements you want, or combining data\n elements into single values.\n\nParDo\n: `ParDo` is the core parallel processing operation in the Apache Beam SDKs,\n invoking a user-specified function on each of the elements of the input\n `PCollection`. `ParDo` collects the zero or more output elements into an output\n `PCollection`. The `ParDo` transform processes elements independently and possibly\n in parallel. The user-defined function for a `ParDo` is called a `DoFn`.\n\nPipeline I/O\n: Apache Beam I/O connectors let you read data into your pipeline and\n write output data from your pipeline. An I/O connector consists of a source and\n a sink. All Apache Beam sources and sinks are transforms that let your\n pipeline work with data from several different data storage formats. You can\n also write a custom I/O connector.\n\nAggregation\n: Aggregation is the process of computing some value from multiple input\n elements. The primary computational pattern for aggregation in Apache Beam\n is to group all elements with a common key and window. Then, it combines each\n group of elements using an associative and commutative operation.\n\nUser-defined functions (UDFs)\n: Some operations within Apache Beam allow executing user-defined code as a\n way of configuring the transform. For `ParDo`, user-defined code specifies the\n operation to apply to every element, and for `Combine`, it specifies how values\n should be combined. A pipeline might contain UDFs written in a different\n language than the language of your runner. A pipeline might also contain UDFs\n written in multiple languages.\n\nRunner\n: Runners are the software that accepts a pipeline and executes it. Most runners are\n translators or adapters to massively parallel big-data processing systems.\n Other runners exist for local testing and debugging.\n\nSource\n: A transform that reads from an external storage system. A pipeline typically reads input data from a source. The source has a type, which may be different from the sink type, so you can change the format of data as it moves through the pipeline.\n\nSink\n: A transform that writes to an external data storage system, like a file or a database.\n\nTextIO\n: A PTransform for reading and writing text files. The TextIO source and sink\n support files compressed with `gzip` and `bzip2`. The TextIO input source\n supports JSON. However, for the Dataflow service to be able to\n parallelize input and\n output, your source data must be delimited with a line feed.\n You can use a regular\n expression to target specific files with the TextIO source.\n Dataflow supports general wildcard patterns. Your glob expression\n can appear anywhere in the path. However, Dataflow does not\n support recursive wildcards (`**`).\n\nAdvanced concepts\n\nEvent time\n: The time a data event occurs, determined by the timestamp on the data\n element itself. This contrasts with the time the actual data element\n gets processed at any stage in the pipeline.\n\nWindowing\n: Windowing enables grouping operations over unbounded collections by dividing\n the collection into windows of finite collections according to the timestamps of\n the individual elements. A windowing function tells the runner how to assign\n elements to an initial window, and how to merge windows of grouped elements.\n Apache Beam lets you define different kinds of windows or use the\n predefined windowing functions.\n\nWatermarks\n: Apache Beam tracks a watermark, which is the system's notion of when all\n data in a certain window can be expected to have arrived in the pipeline.\n Apache Beam tracks a watermark because data is not guaranteed to arrive\n in a pipeline in time order or at predictable intervals. In addition, it's not\n guaranteed that data events will appear in the pipeline in the same order\n that they were generated.\n\nTrigger\n: Triggers determine when to emit aggregated results as data arrives. For\n bounded data, results are emitted after all of the input has been processed. For\n unbounded data, results are emitted when the watermark passes the end of the\n window, indicating that the system believes all input data for that window has\n been processed. Apache Beam provides several predefined triggers and lets\n you combine them.\n\nWhat's next\n\n- To learn more about the basic concepts of building pipelines using the Apache Beam SDKs, see the [Apache Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/) in the Apache Beam documentation.\n- For more details about the Apache Beam capabilities supported by Dataflow, see the [Apache Beam capability matrix](https://beam.apache.org/documentation/runners/capability-matrix/).\n\n*Apache Beam® is a registered\ntrademark of The Apache Software Foundation or its affiliates in the United\nStates and/or other countries.*"]]