Présentation du pushdown de 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 effectuant 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 version 6.5.0 et ultérieure.

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

  • Cloud Data Fusion n'est compatible qu'avec le pushdown d'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 de BigQuery une fois l'exécution de la jointure terminée. Selon la taille de vos ensembles de données, la surcharge réseau peut être considérable, 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 du réseau, le pushdown de transformation convient mieux aux pipelines où plusieurs opérations JOIN sont exécutées en séquence (sans étape entre les étapes de jointure). Cette structure de pipeline présente l'avantage d'amortir le coût en termes d'E/S de transfert et d'extraction d'enregistrements vers et depuis BigQuery en bénéficiant de la vitesse d'exécution des jointures de BigQuery par rapport aux jointures Spark.

Fonctionnement du pushdown de transformation

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

Lorsque vous exécutez des 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, exécutez une tâche d'exportation BigQuery et lisez des enregistrements à partir 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 transformation BigQuery dans Cloud Data Fusion

Bonnes pratiques

Ajuster la taille des clusters et des exécuteurs

Si la structure de votre pipeline consiste en des transformations et des jointures simples, 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, procédez comme suit :

  • Utilisez le nombre "correct" de nœuds de calcul du cluster pour une charge de travail. En d'autres termes, exploitez tout le potentiel du cluster Dataproc provisionné en utilisant pleinement le processeur et la mémoire disponibles pour votre instance, tout en bénéficiant de la vitesse d'exécution de BigQuery pour les opérations JOIN volumineuses.

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

  • Ajustez les configurations de ressources lors des étapes de votre pipeline où les enregistrements sont transférés ou extraits de BigQuery pendant l'exécution du pipeline.

Recommandé: Essayez d'augmenter le nombre de cœurs de processeur pour les ressources de l'exécuteur (dans la limite du nombre de cœurs de processeur utilisés par le nœud de calcul). Cela permet à vos exécuteurs d'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 des données depuis BigQuery si nécessaire pour un traitement ultérieur. Pour en savoir plus, consultez la page Dimensionnement des clusters.

L'avantage de transférer les opérations JOIN vers BigQuery est de permettre l'exécution de vos pipelines sur des clusters Dataproc plus petits. Si vos pipelines sont structurés de telle sorte que les jointures sont les opérations les plus gourmandes en ressources de votre pipeline, vous pouvez tester des tailles de cluster plus petites, car les opérations JOIN intensives sont effectuées dans BigQuery), ce qui vous permet de réduire potentiellement vos coûts de calcul globaux.

Considérer la taille de l'ensemble de données

Examinez les tailles 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 JOIN croisée), 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. Prenez également en compte la surcharge du retrait de ces enregistrements dans Spark lors de l'exécution de traitement Spark supplémentaire de ces enregistrements (par exemple, une transformation ou un récepteur) dans le contexte des performances globales du pipeline.

Étape suivante