J'implémente un pipeline de flux de données qui lit les messages de Pubsub et écrit les TableRows dans BigQuery (BQ) en utilisant Apache Beam SDK 2.0.0 pour Java.
Il s'agit de la partie connexe du code :
tableRowPCollection
.apply(BigQueryIO.writeTableRows().to(this.tableId)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));
Ce code génère un groupe de tâches sous le capot dans le pipeline Dataflow. L'une de ces tâches est le GroupByKey. Cette tâche accumule des éléments dans le pipeline comme on peut le voir dans cet écran d'impression : Image d'accumulation des éléments GBK. Après avoir lu la documentation, je pense que ce problème est lié à la configuration de la fenêtre. Mais je n'ai pas trouvé de moyen de modifier la configuration de la fenêtre puisqu'elle est implicitement créé par Attribution de la fenêtre à l'intérieur de la tâche Reshuffle.
Existe-t-il un moyen de définir les paramètres de la fenêtre et/ou d'attacher des déclencheurs à cet implicite ? Fenêtre ou dois-je créer mon propre DoFn qui insère un TableRow dans BQ ?
Merci d'avance !
[Mise à jour]
J'ai laissé le pipeline fonctionner pendant un jour environ et après que le GroupByKey
La sous-tâche est devenue plus rapide et les nombres d'éléments entrants et sortants se rapprochaient les uns des autres (parfois étaient les mêmes). En outre, j'ai également remarqué que la Watermark
se rapproche de la date actuelle et augmente plus rapidement. Le "problème" était donc résolu.