Modèles Dataflow

Les modèles Dataflow vous permettent d'empaqueter un pipeline Dataflow pour le déploiement. Toute personne disposant des autorisations appropriées peut ensuite utiliser le modèle pour déployer le pipeline empaqueté. Vous pouvez créer vos propres modèles Dataflow personnalisés, et Google vous fournit des modèles prédéfinis pour les scénarios courants.

Avantages

Les modèles présentent plusieurs avantages par rapport au déploiement direct d'un pipeline sur Dataflow :

  • Les modèles séparent la conception du pipeline de son déploiement. Par exemple, un développeur peut créer un modèle et un data scientist peut le déployer ultérieurement.
  • Les modèles peuvent comporter des paramètres permettant de personnaliser le pipeline lorsque vous déployez le modèle.
  • Vous pouvez déployer un modèle à l'aide de la console Google Cloud, de Google Cloud CLI ou des appels d'API REST. Vous n'avez pas besoin d'un environnement de développement ou d'une dépendance de pipeline installée sur votre ordinateur local.
  • Un modèle est un artefact de code qui peut être stocké dans un dépôt de contrôle source et utilisé dans les pipelines d'intégration continue (CI/CD).

Modèles fournis par Google

Google propose divers modèles Dataflow Open Source prédéfinis que vous pouvez utiliser pour les scénarios courants. Pour en savoir plus sur les modèles disponibles, consultez la page Modèles fournis par Google.

Comparer les modèles Flex et les modèles classiques

Dataflow accepte deux types de modèles : les modèles Flex, plus récents, et les modèles classiques. Si vous créez un modèle Dataflow, nous vous recommandons de le créer en tant que modèle Flex.

Avec un modèle Flex, le pipeline est empaqueté sous la forme d'une image Docker dans Artifact Registry, avec un fichier de spécification de modèle dans Cloud Storage. La spécification de modèle contient un pointeur vers l'image Docker. Lorsque vous exécutez le modèle, le service Dataflow démarre une VM de lanceur, extrait l'image Docker et exécute le pipeline. Le graphique d'exécution est créé de manière dynamique en fonction des paramètres d'exécution fournis par l'utilisateur. Pour lancer un job qui utilise un modèle Flex à l'aide de l'API, utilisez la méthode projects.locations.flexTemplates.launch.

Un modèle classique contient la sérialisation JSON d'un graphique de job Dataflow. Le code du pipeline doit encapsuler tous les paramètres d'exécution dans l'interface ValueProvider. Cette interface permet aux utilisateurs de spécifier des valeurs de paramètres lorsqu'ils déploient le modèle. Pour utiliser l'API avec des modèles classiques, consultez la documentation de référence de l'API projects.locations.templates.

Les modèles Flex présentent les avantages suivants par rapport aux modèles classiques :

  • Contrairement aux modèles classiques, les modèles Flex ne nécessitent pas l'interface ValueProvider pour les paramètres d'entrée. Les sources et les récepteurs Dataflow ne sont pas tous compatibles avec ValueProvider.
  • Alors que les modèles classiques comportent un graphique de job statique, les modèles Flex peuvent créer le graphique de job de manière dynamique. Par exemple, le modèle peut sélectionner un autre connecteur d'E/S en fonction des paramètres d'entrée.
  • Un modèle Flex peut effectuer un prétraitement sur une machine virtuelle (VM) lors de la construction du pipeline. Par exemple, il peut valider les valeurs des paramètres d'entrée.

Workflow de modèle

Voici les grandes étapes à suivre pour utiliser des modèles Dataflow:

  1. Les développeurs configurent un environnement de développement et développent leur pipeline. L'environnement comprend le SDK Apache Beam ainsi que d'autres dépendances.
  2. Selon le type de modèle (Flex ou classique) :
    • Pour les modèles Flex, les développeurs empaquettent le pipeline dans une image Docker, transfèrent l'image dans Artifact Registry, puis importent un fichier de spécification de modèle dans Cloud Storage.
    • Pour les modèles classiques, les développeurs exécutent le pipeline, créent un fichier de modèle et préproduisent le modèle dans Cloud Storage.
  3. D'autres utilisateurs envoient une requête au service Dataflow pour exécuter le modèle.
  4. Dataflow crée un pipeline à partir du modèle. Le démarrage du pipeline peut prendre jusqu'à cinq à sept minutes.

Définir les autorisations IAM

Les tâches Dataflow, y compris les tâches exécutées à partir de modèles, utilisent deux comptes de service IAM :

  • Le service Dataflow utilise un compte de service Dataflow pour manipuler les ressources Google Cloud, comme la création de VM.
  • Les VM de nœud de calcul Dataflow utilisent un compte de service de nœud de calcul pour accéder aux fichiers de votre pipeline et à d'autres ressources. Ce compte de service doit avoir accès à toutes les ressources auxquelles la tâche de pipeline fait référence, y compris la source et le récepteur utilisés par le modèle. Pour en savoir plus, consultez la page Accéder aux ressources Google Cloud.

Assurez-vous que ces deux comptes de service disposent des rôles appropriés. Pour en savoir plus, consultez la section Sécurité et autorisations pour Cloud Dataflow.

Exigences concernant la version du SDK Apache Beam

Avant de créer vos propres modèles, vérifiez que votre version du SDK Apache Beam est compatible avec la création de modèles.

Java

Pour créer des modèles avec le SDK Apache Beam 2.x pour Java, vous devez disposer de la version 2.0.0-beta3 ou ultérieure.

Python

Pour créer des modèles avec le SDK Apache Beam 2.x pour Python, vous devez disposer de la version 2.0.0 ou ultérieure.

Pour exécuter des modèles avec Google Cloud CLI, vous devez disposer de la version 138.0.0 ou ultérieure de Google Cloud CLI.

Étendre les modèles

Vous pouvez créer vos propres pipelines en étendant les modèles Dataflow Open Source. Par exemple, pour un modèle qui utilise une durée de fenêtre fixe, les données qui arrivent en dehors de la fenêtre peuvent être supprimées. Pour éviter ce problème, utilisez le code du modèle comme base et modifiez le code pour appeler l'opération .withAllowedLateness.

Étapes suivantes