Présentation du pushdown Transformation

Vous pouvez concevoir et exécuter efficacement des charges de travail ELT en envoyant des transformations de jointure à BigQuery. Lorsque vous activez le pushdown de transformation, Cloud Data Fusion exécute les opérations JOIN dans BigQuery au lieu d'Apache Spark. Toutes les autres transformations sont exécutées à l'aide de Spark. Pour les pipelines qui effectuent plusieurs jointures complexes, BigQuery peut exécuter les opérations de jointure plus rapidement que Spark.

Limites

  • Le pushdown de transformation est disponible dans Cloud Data Fusion 6.5.0 et versions ultérieures.

  • Lorsque vous prévisualisez des données dans Cloud Data Fusion, toutes les transformations, y compris les jointures, sont exécutées dans Spark, et non dans BigQuery.

  • Cloud Data Fusion n'accepte que le pushdown des opérations JOIN.

  • Les jointures configurées pour charger une ou plusieurs entrées en mémoire sont exécutées dans Spark au lieu de BigQuery.

Quand utiliser le pushdown de transformation

L'exécution d'opérations JOIN dans BigQuery implique un processus d'écriture d'enregistrements dans BigQuery et de lecture des enregistrements à partir de BigQuery une fois l'exécution de la jointure terminée. En fonction de la taille de vos ensembles de données, une surcharge de réseau peut être importante, ce qui peut avoir un impact négatif sur le temps d'exécution global du pipeline lorsque le pushdown de transformation est activé.

En raison de cette surcharge de réseau, le pushdown de transformation est particulièrement adapté aux pipelines dans lesquels plusieurs opérations JOIN sont exécutées de manière séquentielle (sans étapes entre les étapes de jointure). Cette structure de pipeline présente l'avantage d'amortir le coût d'E/S correspondant au transfert et à l'extraction d'enregistrements vers et BigQuery, en profitant de la vitesse d'exécution des jointures de BigQuery par rapport aux jointures Spark.

Fonctionnement du pushdown

Lorsque vous exécutez un pipeline avec la fonctionnalité de transformation pushdown activée, Cloud Data Fusion utilise Spark pour traiter chaque étape, à l'exception des étapes qui effectuent des jointures.

Lors de l'exécution d'opérations JOIN:

  1. Cloud Data Fusion charge les ensembles de données d'entrée dans BigQuery (en écrivant les enregistrements dans Cloud Storage, puis en exécutant une tâche de chargement BigQuery).

  2. Les opérations JOIN sont ensuite exécutées en tant que tâches BigQuery à l'aide d'instructions de jointure SQL.

  3. Une fois les opérations de jointure exécutées, les enregistrements sont exportés de BigQuery pour un traitement ultérieur dans Spark. Pour ce faire, vous exécutez une tâche d'exportation BigQuery et lisez les enregistrements de Cloud Storage.

Le schéma suivant montre comment les transformations sont transmises à BigQuery au lieu de Spark lorsque le pushdown de transformation est activé dans Cloud Data Fusion.

Pushdown de la transformation BigQuery dans Cloud Data Fusion

Bonnes pratiques

Ajuster la taille du cluster et de l'exécuteur

Si votre structure de pipeline est constituée de simples transformations et jointures, votre pipeline peut bénéficier d'un parallélisme supplémentaire lors de la lecture et de l'écriture d'enregistrements dans BigQuery.

Pour optimiser la gestion des ressources dans votre pipeline:

  • Utilisez le nombre "à droite" de nœuds de calcul de cluster pour une charge de travail. En d'autres termes, tirez pleinement parti du cluster Dataproc provisionné en exploitant pleinement le processeur et la mémoire disponibles pour votre instance, tout en profitant de la vitesse d'exécution de BigQuery pour les opérations JOIN volumineuses. (Installation de Python groupée).

  • Améliorez le parallélisme de vos pipelines à l'aide de clusters d'autoscaling.

  • Ajustez vos configurations de ressources au cours des étapes de votre pipeline où les enregistrements sont envoyés ou retirés de BigQuery lors de son exécution.

Recommandé: Essayez d'augmenter le nombre de cœurs de processeur pour vos ressources d'exécuteur (jusqu'au nombre de cœurs de processeur utilisés par votre nœud de calcul). Ainsi, vos exécuteurs peuvent optimiser l'utilisation du processeur lors des étapes de sérialisation et de désérialisation requises pour écrire des données dans BigQuery, puis lire les données de BigQuery si nécessaire en vue d'un traitement ultérieur. Pour en savoir plus, consultez la page Dimensionnement du cluster.

L'exécution d'opérations JOIN dans BigQuery présente l'avantage de pouvoir s'exécuter sur des clusters Dataproc plus petits. Si vos pipelines sont structurés de telle sorte que les jointures constituent les opérations les plus gourmandes en ressources de votre pipeline, vous pouvez essayer des tailles de cluster plus petites, car les opérations JOIN lourdes sont désormais effectuées BigQuery, ce qui vous permet de réduire potentiellement vos coûts de calcul globaux.

Tenez compte de la taille de l'ensemble de données

Tenez compte de la taille des ensembles de données dans les opérations JOIN. Pour les opérations JOIN qui génèrent un nombre important d'enregistrements de sortie (par exemple, quelque chose qui ressemble à une opération croisée JOIN), la taille de l'ensemble de données obtenu peut être supérieure à plusieurs ordres de grandeur. l'ensemble de données d'entrée. Pensez également à réintégrer ces enregistrements dans Spark lorsque le traitement Spark supplémentaire pour ces enregistrements (par exemple, une transformation ou un récepteur) a lieu dans le contexte des performances globales du pipeline.

Étape suivante