Pour améliorer les performances de vos pipelines de données, vous pouvez transférer certaines opérations de transformation vers BigQuery au lieu d'Apache Spark. Le pushdown de transformation est un paramètre qui permet d'envoyer une opération située dans un pipeline de données Cloud Data Fusion vers BigQuery en tant que moteur d'exécution. Par conséquent, l'opération et ses données sont transférées vers BigQuery, où l'opération est effectuée.
Le pushdown de transformation améliore les performances des pipelines comportant
plusieurs opérations
JOIN complexes
ou d'autres transformations compatibles. L'exécution de certaines transformations dans BigQuery peut être plus rapide que dans Spark.
Les transformations non compatibles et toutes les transformations d'aperçu sont exécutées dans Spark.
Transformations compatibles
Le pushdown de transformation est disponible dans Cloud Data Fusion version 6.5.0 et ultérieure, mais certaines des transformations suivantes ne sont compatibles qu'avec les versions ultérieures.
Opérations JOIN
Le pushdown de transformation est disponible pour les opérations
JOINdans Cloud Data Fusion version 6.5.0 et ultérieure.Les opérations
JOINde base (sur clés) et avancées sont compatibles.Les jointures doivent comporter exactement deux étapes d'entrée pour que l'exécution ait lieu dans BigQuery.
Les jointures configurées pour charger une ou plusieurs entrées en mémoire sont exécutées dans Spark au lieu de BigQuery, sauf dans les cas suivants :
- Si l'une des entrées de la jointure est déjà transférée.
- Si vous avez configuré la jointure pour qu'elle soit exécutée dans le moteur SQL (voir l' option Étapes pour forcer l'exécution ).
Récepteur BigQuery
Le pushdown de transformation est disponible pour le récepteur BigQuery dans Cloud Data Fusion version 6.7.0 et ultérieure.
Lorsque le récepteur BigQuery suit une étape qui a été exécutée dans BigQuery, l'opération qui écrit des enregistrements dans BigQuery est effectuée directement dans BigQuery.
Pour améliorer les performances avec ce récepteur, vous avez besoin des éléments suivants :
- Le compte de service doit être autorisé à créer et à mettre à jour des tables dans l'ensemble de données utilisé par le récepteur BigQuery.
- Les ensembles de données utilisés pour le pushdown de transformation et le récepteur BigQuery doivent être stockés au même emplacement.
- L'opération doit être l'une des suivantes :
Insert(l'optionTruncate Tablen'est pas compatible)UpdateUpsert
Agrégations GROUP BY
Le pushdown de transformation est disponible pour les agrégations GROUP BY dans Cloud Data Fusion version 6.7.0 et ultérieure.
Les agrégations GROUP BY dans BigQuery sont disponibles pour les opérations suivantes :
AvgCollect List(les valeurs nulles sont supprimées du tableau de sortie)Collect Set(les valeurs nulles sont supprimées du tableau de sortie)ConcatConcat DistinctCountCount DistinctCount NullsLogical AndLogical OrMaxMinStandard DeviationSumSum of SquaresCorrected Sum of SquaresVarianceShortest StringLongest String
Les agrégations GROUP BY sont exécutées dans BigQuery dans les cas suivants :
- Elles suivent une étape qui a déjà été transférée.
- Vous les avez configurées pour qu'elles soient exécutées dans le moteur SQL (voir l' option Étapes pour forcer l'exécution ).
Agrégations de déduplication
Le pushdown de transformation est disponible pour les agrégations de déduplication dans Cloud Data Fusion version 6.7.0 et ultérieure pour les opérations suivantes :
- Aucune opération de filtrage n'est spécifiée
ANY(une valeur non nulle pour le champ souhaité)MIN(la valeur minimale du champ spécifié)MAX(la valeur maximale du champ spécifié)
Les opérations suivantes ne sont pas compatibles :
FIRSTLAST
Les agrégations de déduplication sont exécutées dans le moteur SQL dans les cas suivants :
- Elles suivent une étape qui a déjà été transférée.
- Vous les avez configurées pour qu'elles soient exécutées dans le moteur SQL (voir l' option Étapes pour forcer l'exécution ).
Pushdown de la source BigQuery
Le pushdown de la source BigQuery est disponible dans Cloud Data Fusion version 6.8.0 et ultérieure.
Lorsqu'une source BigQuery suit une étape compatible avec le pushdown BigQuery, le pipeline peut exécuter toutes les étapes compatibles dans BigQuery.
Cloud Data Fusion copie les enregistrements nécessaires à l'exécution du pipeline dans BigQuery.
Lorsque vous utilisez le pushdown de la source BigQuery, les propriétés de partitionnement et de clustering de la table sont conservées, ce qui vous permet de les utiliser pour optimiser d'autres opérations, telles que les jointures.
Exigences supplémentaires
Pour utiliser le pushdown de la source BigQuery, vous devez respecter les exigences suivantes :
Le compte de service configuré pour le pushdown de transformation BigQuery doit être autorisé à lire les tables dans l'ensemble de données de la source BigQuery.
Les ensembles de données utilisés dans la source BigQuery et l'ensemble de données configuré pour le pushdown de transformation doivent être stockés au même emplacement.
Agrégations de fenêtres
Le pushdown de transformation est disponible pour les agrégations de fenêtres dans Cloud Data Fusion version 6.9 et ultérieure. Les agrégations de fenêtres dans BigQuery sont compatibles avec les opérations suivantes :
RankDense RankPercent RankN tileRow NumberMedianContinuous PercentileLeadLagFirstLastCumulative distributionAccumulate
Les agrégations de fenêtres sont exécutées dans BigQuery dans les cas suivants :
- Elles suivent une étape qui a déjà été transférée.
- Vous les avez configurées pour qu'elles soient exécutées dans le moteur SQL (voir l' option Étapes pour forcer le pushdown ).
Pushdown du filtre Wrangler
Le pushdown du filtre Wrangler est disponible dans Cloud Data Fusion version 6.9 et ultérieure.
Lorsque vous utilisez le plug-in Wrangler, vous pouvez transférer des filtres, appelés opérations Precondition, pour qu'ils soient exécutés dans BigQuery au lieu de Spark.
Le pushdown du filtre n'est compatible qu'avec le mode SQL pour les préconditions, qui a également été publié dans la version 6.9. Dans ce mode, le plug-in accepte une expression de précondition au format SQL standard ANSI.
Si le mode SQL est utilisé pour les préconditions, les directives et les directives définies par l'utilisateur sont désactivées pour le plug-in Wrangler, car elles ne sont pas compatibles avec les préconditions en mode SQL.
Le mode SQL pour les préconditions n'est pas compatible avec les plug-ins Wrangler comportant plusieurs entrées lorsque le pushdown de transformation est activé. S'il est utilisé avec plusieurs entrées, cette étape Wrangler avec des conditions de filtre SQL est exécutée dans Spark.
Les filtres sont exécutés dans BigQuery dans les cas suivants :
- Ils suivent une étape qui a déjà été transférée.
- Vous les avez configurés pour qu'ils soient exécutés dans le moteur SQL (voir l' option Étapes pour forcer le pushdown ).
Métriques
Pour en savoir plus sur les métriques fournies par Cloud Data Fusion pour la partie du pipeline exécutée dans BigQuery, consultez la page Métriques du pipeline de pushdown BigQuery.
Quand utiliser le pushdown de transformation ?
L'exécution de transformations dans BigQuery implique les éléments suivants :
- Écriture d'enregistrements dans BigQuery pour les étapes compatibles de votre pipeline.
- Exécution des étapes compatibles dans BigQuery.
- Lecture des enregistrements de BigQuery une fois les transformations compatibles exécutées, sauf si elles sont suivies d'un récepteur BigQuery.
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 la surcharge réseau, nous vous recommandons d'utiliser le pushdown de transformation dans les cas suivants :
- Plusieurs opérations compatibles sont exécutées en séquence (sans étapes entre les étapes).
- Les gains de performances obtenus grâce à l'exécution des transformations par BigQuery, par rapport à Spark, compensent la latence du déplacement des données vers et éventuellement hors de BigQuery.
Fonctionnement
Lorsque vous exécutez un pipeline qui utilise le pushdown de transformation, Cloud Data Fusion exécute les étapes de transformation compatibles dans BigQuery. Toutes les autres étapes du pipeline sont exécutées dans Spark.
Lors de l'exécution des transformations :
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.
Les opérations
JOINet les transformations compatibles sont ensuite exécutées en tant que tâches BigQuery à l'aide d'instructions SQL.Si un traitement supplémentaire est nécessaire après l'exécution des tâches, les enregistrements peuvent être exportés de BigQuery vers Spark. Toutefois, si l'option Tenter une copie directe vers les récepteurs BigQuery est activée et que le récepteur BigQuery suit une étape exécutée dans BigQuery, les enregistrements sont écrits directement dans la table du récepteur BigQuery de destination.
Le schéma suivant montre comment le pushdown de transformation exécute les transformations compatibles dans BigQuery au lieu de Spark.

Bonnes pratiques
Ajuster la taille des clusters et des exécuteurs
Pour optimiser la gestion des ressources dans votre pipeline, procédez comme suit :
Utilisez le nombre approprié de nœuds de calcul du cluster pour une charge de travail. En d'autres termes, exploitez tout le potentiel du cluster Managed Service for Apache Spark 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 tâches 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). Les exécuteurs optimisent l'utilisation du processeur lors des étapes de sérialisation et de désérialisation lorsque les données entrent et sortent de BigQuery. Pour en savoir plus, consultez la page Dimensionnement des clusters.
L'avantage d'exécuter des transformations dans BigQuery est que vos pipelines peuvent s'exécuter sur des clusters Managed Service for Apache Spark plus petits. Si 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.
Récupérer des données plus rapidement avec l'API BigQuery Storage Read
Une fois que BigQuery a exécuté les transformations, votre pipeline peut comporter des étapes supplémentaires à exécuter dans Spark. Dans Cloud Data Fusion version 6.7.0 et ultérieure, le pushdown de transformation est compatible avec l' API BigQuery Storage Read, ce qui améliore la latence et accélère les opérations de lecture dans Spark. Cela peut réduire le temps d'exécution global du pipeline.
L'API lit les enregistrements en parallèle. Nous vous recommandons donc d'ajuster la taille des exécuteurs en conséquence. Si des opérations gourmandes en ressources sont exécutées dans BigQuery, réduisez l'allocation de mémoire pour les exécuteurs afin d' améliorer le parallélisme lors de l'exécution du pipeline (voir Ajuster la taille des clusters et des exécuteurs).
L'API BigQuery Storage Read est désactivée par défaut. Vous pouvez l'activer dans les environnements d'exécution où Scala 2.12 est installé (y compris Managed Service for Apache Spark 2.0 et Managed Service for Apache Spark 1.5).
Considérer la taille de l'ensemble de données
Examinez 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, comme 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.
Limiter les données déséquilibrées
Les opérations JOIN pour les données fortement déséquilibrées peuvent entraîner le
dépassement des
limites d'utilisation des ressourcespar la tâche BigQuery,
ce qui provoque l'échec de l'opération JOIN. Pour éviter cela, accédez aux paramètres du plug-in Joiner et identifiez l'entrée déséquilibrée dans le champ Skewed Input Stage (Étape d'entrée déséquilibrée). Cela permet à Cloud Data Fusion d'organiser les entrées de manière à réduire le risque que l'instruction BigQuery dépasse les limites.

Étape suivante
- Découvrez comment activer le pushdown de transformation dans Cloud Data Fusion.