Notes de version du SDK Cloud Dataflow 2.x pour Java

REMARQUE : La page de téléchargements d'Apache Beam contient les notes de version des différentes versions du SDK Apache Beam.

REMARQUE : Les versions du SDK Cloud Dataflow 2.x comportent un certain nombre de modifications importantes par rapport à la série de versions 1.x. Ces modifications sont répertoriées dans le guide de migration des versions 1.x à 2.x.

En janvier 2016, Google a annoncé le don des SDK Cloud Dataflow à Apache Software Foundation dans le cadre du projet Apache Beam. Les SDK Cloud Dataflow sont désormais basés sur Apache Beam.

Le SDK Cloud Dataflow pour Java 2.0.0 est la première version 2.x stable du SDK Cloud Dataflow pour Java, basée sur un sous-ensemble de la base de code Apache Beam. Pour en savoir plus sur la version 1.x du SDK Cloud Dataflow pour Java, consultez les notes de version du SDK Cloud Dataflow 1.x pour Java.

La page État de la compatibilité des versions du SDK contient des informations sur l'état de compatibilité de chaque version du SDK Dataflow.

Pour installer et utiliser le SDK Cloud Dataflow, reportez-vous au guide d'installation du SDK Cloud Dataflow.

Avertissement pour les utilisateurs effectuant une mise à niveau à partir de la version 1.x du SDK Cloud Dataflow pour Java :
Il s'agit d'une nouvelle version majeure, qui s'accompagne des mises en garde suivantes.
* Changements importants : Le SDK Cloud Dataflow 2.x pour Java comporte un certain nombre de changements importants par rapport à la série de versions 1.x. Pour en savoir plus, consultez les informations ci-dessous.
* Incompatibilité en mise à jour : Le SDK Cloud Dataflow 2.x pour Java est incompatible en mise à jour avec Cloud Dataflow 1.x. Les tâches de traitement par flux utilisant un SDK Cloud Dataflow 1.x ne peuvent pas être mises à jour de façon à utiliser un SDK Cloud Dataflow 2.x. Les pipelines Cloud Dataflow 2.x ne peuvent être mis à jour que vers les versions 2.0.0 et ultérieures des SDK.

Contenu de la distribution du SDK Cloud Dataflow

La distribution du SDK Cloud Dataflow contient un sous-ensemble de l'écosystème Apache Beam. Ce sous-ensemble comprend les composants qui permettent de définir un pipeline et de l'exécuter localement ou sur le service Cloud Dataflow, y compris les suivants :

  • Le SDK de base
  • les exécuteurs DirectRunner et DataflowRunner
  • les composants d'E/S associés à d'autres services Google Cloud Platform
  • Apache Kafka

La distribution du SDK Cloud Dataflow n'inclut pas certains autres composants Beam, tels que :

  • les exécuteurs destinés à d'autres moteurs de traitement distribué (tels qu'Apache Spark ou Apache Flink)
  • les composants d'E/S associés aux services autres que Cloud Platform qui ne sont pas explicitement répertoriés ci-dessus

Si votre cas d'utilisation nécessite des composants non inclus dans la distribution, vous pouvez utiliser directement les modules Apache Beam appropriés tout en continuant à exécuter votre pipeline sur le service Cloud Dataflow.

Notes de version

Cette section présente les modifications les plus pertinentes de chaque version pour les clients Cloud Dataflow.

La page de téléchargements d'Apache Beam contient les notes de version des différentes versions du SDK Apache Beam.

17 décembre 2018

Les versions suivantes du SDK seront mises hors service le 25 mars 2019 en raison de l'interruption de la compatibilité avec le protocole JSON-RPC et les points de terminaison mondiaux pour les requêtes HTTP par lots. Peu après cette date, vous ne pourrez plus soumettre de tâches Cloud Dataflow ni mettre à jour des tâches Cloud Dataflow en cours d'exécution qui utilisent des SDK mis hors service. De plus, les tâches en flux continu existantes utilisant ces versions du SDK pourront échouer.

  • SDK Apache Beam pour Java, versions 2.0.0 à 2.4.0 (incluses)
  • SDK Apache Beam pour Python, versions 2.0.0 à 2.4.0 (incluses)
  • SDK Cloud Dataflow pour Java, versions 2.0.0 à 2.4.0 (incluses)
  • SDK Cloud Dataflow pour Python, versions 2.0.0 à 2.4.0 (incluses)

Consultez la page État de la compatibilité des versions du SDK pour connaître l'état détaillé de la compatibilité du SDK.

2.5.0 (27 juin 2018)

AVIS D'OBSOLESCENCE FUTURE : La version 2.5.0 du SDK Cloud Dataflow sera la dernière version du SDK Cloud Dataflow pour Java distincte du SDK Apache Beam.

La version 2.5.0 est basée sur un sous-ensemble d'Apache Beam 2.5.0. Consultez l'annonce de la version 2.5.0 d'Apache Beam pour en savoir plus.

Ajout de KafkaIO au SDK Cloud Dataflow.

Ajout de la possibilité pour BigQueryIO d'utiliser un projet différent pour les tâches de chargement en mode de traitement par lot.

Ajout de la possibilité de désactiver l'API par lot dans SpannerIO.

Ajout d'une option permettant de doter BigQueryIO d'une méthode pour indiquer la priorité : INTERACTIVE ou BATCH.

Correction de l'exécuteur DirectRunner afin que celui-ci se bloque si plusieurs minuteurs sont définis au sein d'un même lot.

Correction de plusieurs problèmes liés à la stabilité, aux performances et à la documentation.

2.4.0 (30 mars 2018)

La version 2.4.0 est basée sur un sous-ensemble d'Apache Beam 2.4.0. Consultez l'annonce de la version 2.4.0 d'Apache Beam pour en savoir plus.

Ajout de Wait.on(), une nouvelle transformation offrant des fonctions polyvalentes de séquençage des transformations. Wait.on() s'utilise avec les pipelines de traitement par lot ou par flux.

Évolutivité accrue lors de la recherche de nouveaux fichiers avec les transformations d'E/S, telles que TextIO.read().watchForNewFiles(). Les tests ont démontré la possibilité de lire jusqu'à 1 million de fichiers.

BigQueryIO.write() accepte désormais le partitionnement par colonnes, ce qui permet un chargement moins coûteux et plus rapide des données historiques dans une table partitionnée par date. Le partitionnement par colonnes requiert une seule tâche de chargement en tout et pour tout au lieu d'une tâche de chargement par partition.

Mise à jour de SpannerIO pour activer l'utilisation de l'API BatchQuery de Cloud Spanner. La documentation de Cloud Spanner fournit des informations supplémentaires sur l'utilisation du connecteur Cloud Dataflow.

Mise à jour des conteneurs Cloud Dataflow pour prendre en charge la stratégie illimitée Java Cryptography Extension (JCE).

Suppression de la méthode obsolète WindowedValue.valueInEmptyWindows().

Correction d'un problème de suppression de données prématurée lié à ApproximateUnique.

Correction de plusieurs problèmes liés à la stabilité, aux performances et à la documentation.

2.3.0 (28 février 2018)

La version 2.3.0 est basée sur un sous-ensemble d'Apache Beam 2.3.0. Consultez l'annonce de la version 2.3.0 d'Apache Beam pour en savoir plus.

Abandon de la compatibilité avec Java 7.

Ajout de la compatibilité des modèles (paramètres ValueProvider) dans BigtableIO.

Ajout de nouvelles API Fluent polyvalentes pour l'écriture dans les fichiers : FileIO.write() et FileIO.writeDynamic(). Les API DynamicDestinations de TextIO et AvroIO sont désormais obsolètes.

MapElements et FlatMapElements prennent désormais en charge les entrées latérales.

Correction des problèmes liés à BigQueryIO concernant l'écriture dans des tables dotées de décorateurs de partitions.

2.2.0 (8 décembre 2017)

La version 2.2.0 est basée sur un sous-ensemble d'Apache Beam 2.2.0. Consultez les notes de version d'Apache Beam 2.2.0 pour en savoir plus.

Problèmes

Problème connu : lors de l'exécution en mode de traitement par lot, les métriques de jauge ne sont pas signalées.

Problème connu : la prise en charge de SQL n'est pas incluse dans cette version, car elle est expérimentale et non testée sur Cloud Dataflow. L'utilisation de SQL n'est pas recommandée.

Mises à jour et améliorations

Ajout de la possibilité de définir des libellés de tâche dans DataflowPipelineOptions.

Ajout de la possibilité de lire des enregistrements GenericRecords Avro avec BigQueryIO.

Ajout de la prise en charge des séparateurs personnalisés multi-octets dans TextIO.

Ajout dans TextIO de la possibilité de surveiller l'apparition de nouveaux fichiers (TextIO.watchForNewFiles).

Ajout dans TextIO et AvroIO de la possibilité de lire une collection PCollection de noms de fichiers (ReadAll).

Ajout de la possibilité de désactiver la validation dans BigtableIO.write().

Ajout de la possibilité d'utiliser la méthode setTimePartitioning dans BigQueryIO.write().

Correction de plusieurs problèmes liés à la stabilité, aux performances et à la documentation.

2.1.0 (1er septembre 2017)

La version 2.1.0 est basée sur un sous-ensemble d'Apache Beam 2.1.0. Consultez les notes de version d'Apache Beam 2.1.0 pour en savoir plus.

Problèmes

Problème connu : lors de l'exécution en mode de traitement par lot, les métriques de jauge ne sont pas signalées.

Mises à jour et améliorations

Ajout de la détection du code potentiellement bloqué, qui se traduit par des entrées de journal Processing lulls.

Ajout de la prise en charge des métriques pour l'exécuteur DataflowRunner en mode de traitement par flux.

Ajout de la méthode OnTimeBehavior à WindowinStrategy afin de contrôler l'émission des volets ON_TIME.

Ajout d'une règle de nom de fichier par défaut pour les récepteurs à fichiers fenêtrés FileBasedSink qui consomment des entrées fenêtrées.

Problème résolu : les minuteurs de temps de traitement des fenêtres expirées étaient ignorés.

Problème résolu : DatastoreIO ne parvenait pas à progresser lorsque Datastore tardait à répondre.

Correction d'un problème qui entraînait la lecture partielle des fichiers bzip2. Ajout de la prise en charge des fichiers bzip2 concaténés.

Correction de plusieurs problèmes liés à la stabilité, aux performances et à la documentation.

2.0.0 (23 mai 2017)

La version 2.0.0 est basée sur un sous-ensemble d'Apache Beam 2.0.0. Consultez les notes de version d'Apache Beam 2.0.0 pour en savoir plus.

Problèmes

Problème identifié : lors de l'exécution en mode de traitement par flux, les métriques ne sont pas signalées dans l'interface utilisateur de Cloud Dataflow.

Problème identifié : lors de l'exécution en mode de traitement par lot, les métriques de jauge ne sont pas signalées.

Mises à jour et améliorations

Ajout de la possibilité d'utiliser l'interface Stackdriver Error Reporting.

Ajout dans BigQueryIO d'une nouvelle API permettant d'écrire dans plusieurs tables, éventuellement avec différents schémas, en fonction des données. Consultez BigQueryIO.Write.to(SerializableFunction) et BigQueryIO.Write.to(DynamicDestinations) pour en savoir plus.

Ajout d'une nouvelle API pour l'écriture de collections fenêtrées et illimitées dans TextIO et AvroIO. Consultez par exemple TextIO.Write.withWindowedWrites() et TextIO.Write.withFilenamePolicy(FilenamePolicy) pour en savoir plus.

Ajout de TFRecordIO pour la lecture et l'écriture de fichiers TensorFlow TFRecord.

Ajout de la possibilité d'enregistrer automatiquement les fournisseurs CoderProvider dans le registre CoderRegistry par défaut. Les fournisseurs CoderProvider sont enregistrés par un ServiceLoader via des implémentations concrètes d'une interface CoderProviderRegistrar.

Ajout d'une exigence supplémentaire de l'API Google. Vous devez désormais activer également l'API Cloud Resource Manager.

Modification de l'ordre des paramètres pour les transformations ParDo comportant des entrées et des sorties latérales.

Modification de l'ordre des paramètres pour les transformations MapElements et FlatMapElements en cas de spécification d'un type de sortie.

Modification du modèle associé à la lecture et à l'écriture de types personnalisés vers PubsubIO et KafkaIO.

Modification de la syntaxe pour la lecture depuis et l'écriture vers TextIO, AvroIO, TFRecordIO, KinesisIO et BigQueryIO.

Modification de la syntaxe permettant de configurer des paramètres de fenêtrage autres que le paramètre WindowFn lui-même via la transformation Window.

Consolidation de XmlSource et XmlSink dans XmlIO.

CountingInput renommé en GenerateSequence, et unification de la syntaxe permettant de produire des séquences limitées et illimitées.

BoundedSource#splitIntoBundles renommé en #split.

UnboundedSource#generateInitialSplits renommé en #split.

Il n'est plus possible de générer une sortie à partir de @StartBundle. Au lieu d'un paramètre du type Context, cette méthode peut éventuellement accepter un argument du type StartBundleContext pour accéder aux options de pipeline (PipelineOptions).

Désormais, la génération d'une sortie à partir de @FinishBundle nécessite systématiquement un horodatage et une fenêtre explicites. Au lieu d'un paramètre du type Context, cette méthode peut éventuellement accepter un argument du type FinishBundleContext pour accéder aux options de pipeline (PipelineOptions) et émettre une sortie vers des fenêtres spécifiques.

XmlIO ne fait plus partie du SDK de base. Il doit être ajouté manuellement via le nouveau package xml-io.

Remplacement de l'API Aggregator par la nouvelle API Metrics, qui permet de créer des métriques/compteurs définis par l'utilisateur.


Remarque : Toutes les versions 2.0.0-beta sont OBSOLÈTES.

2.0.0-beta3 (17 mars 2017)

La version 2.0.0-beta3 est basée sur un sous-ensemble d'Apache Beam 0.6.0.

TextIO modifié de façon à ne fonctionner que sur des chaînes.

Modification de KafkaIO de sorte que les paramètres de type soient spécifiés de manière explicite.

Fonctions de fabrique de ToString renommées.

Modification des transformations Count, Latest, Sample et SortValues.

Write.Bound renommé en Write.

Classes de transformation Flatten renommées.

Méthode GroupByKey.create scindée en deux méthodes : create et createWithFewKeys.

2.0.0-beta2 (2 février 2017)

La version 2.0.0-beta2 est basée sur un sous-ensemble d'Apache Beam 0.5.0.

Ajout de la fonctionnalité PubsubIO, qui permet aux transformations Read et Write de donner accès aux attributs des messages Cloud Pub/Sub.

Ajout de la prise en charge des pipelines avec état via la nouvelle API State.

Ajout de la compatibilité avec le minuteur via la nouvelle API Timer. La compatibilité de cette fonctionnalité est limitée à l'exécuteur DirectRunner dans la présente version.

2.0.0-beta1 (7 janvier 2017)

La version 2.0.0-beta1 est basée sur un sous-ensemble d'Apache Beam 0.4.0.

Amélioration de la compression : CompressedSource prend en charge la lecture de fichiers compressés au format ZIP. TextIO.Write et AvroIO.Write prennent en charge les sorties compressées.

Ajout de fonctionnalité à AvroIO : Write prend désormais en charge l'ajout de métadonnées utilisateur personnalisées.

Ajout de fonctionnalité à BigQueryIO : Write divise les importations en bloc volumineuses (> 12 Tio) en plusieurs tâches de chargement BigQuery, ce qui lui permet de gérer des ensembles de données très volumineux.

Ajout de fonctionnalité à BigtableIO : Write prend en charge les collections PCollection illimitées et peut être utilisé en mode de traitement par flux dans l'exécuteur DataflowRunner.

Pour en savoir plus, veuillez consulter les notes de version pour Apache Beam 0.3.0-incubating, 0.4.0 et 0.5.0.

D'autres modules Apache Beam de la version correspondante peuvent être utilisés avec cette distribution, y compris des connecteurs d'E/S supplémentaires comme Java Message Service (JMS), Apache Kafka, Java Database Connectivity (JDBC), MongoDB et Amazon Kinesis. Veuillez consulter le site Apache Beam pour plus de détails.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

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