Présentation de la création déroulante de la transformation

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 terme "Création déroulante" de transformation fait référence à un paramètre qui permet de transférer une opération dans un pipeline de données Cloud Data Fusion vers BigQuery en tant que moteur d'exécution. En conséquence, l'opération et ses données sont transférées vers BigQuery, où l'opération s'effectue à cet endroit.

La redirection de la transformation améliore les performances des pipelines comportant plusieurs opérations JOIN complexes ou d'autres transformations compatibles. Certaines transformations dans BigQuery peuvent être plus rapides que leur exécution dans Spark.

Les transformations non compatibles et toutes les transformations d'aperçu sont exécutées dans Spark.

Transformations compatibles

La création déroulante de transformation est disponible dans Cloud Data Fusion 6.5.0 et versions ultérieures, mais certaines des transformations suivantes ne sont compatibles qu'avec les versions ultérieures.

JOIN Opérations

  • La création déroulante de transformation est disponible pour les opérations JOIN dans Cloud Data Fusion 6.5.0 et versions ultérieures.

  • Les opérations JOIN de base (sur les clés) et avancées sont acceptées.

  • Les jointures doivent comporter exactement deux étapes d'entrée pour que leur 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à poussée vers le bas.
    • Si vous avez configuré la jointure à exécuter dans le moteur SQL (consultez la section Étapes pour forcer l'exécution).

Récepteur BigQuery

La création déroulante de transformation est disponible pour le récepteur BigQuery dans Cloud Data Fusion 6.7.0 et versions ultérieures.

Lorsque le récepteur BigQuery suit une étape exécutée dans BigQuery, l'opération d'écriture des enregistrements dans BigQuery s'effectue 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 bloc "Création déroulante de la transformation" et le récepteur BigQuery doivent être stockés dans le même emplacement.
  • L'opération doit être l'une des suivantes :
    • Insert (l'option Truncate Table n'est pas acceptée)
    • Update
    • Upsert

GROUP BY agrégations

La création déroulante de transformation est disponible pour les agrégations GROUP BY dans Cloud Data Fusion 6.7.0 et versions ultérieures.

Les agrégations GROUP BY dans BigQuery sont disponibles pour les opérations suivantes:

  • Avg
  • Collect List (les valeurs nulles sont supprimées du tableau de sortie)
  • Collect Set (les valeurs nulles sont supprimées du tableau de sortie)
  • Concat
  • Concat Distinct
  • Count
  • Count Distinct
  • Count Nulls
  • Logical And
  • Logical Or
  • Max
  • Min
  • Standard Deviation
  • Sum
  • Sum of Squares
  • Corrected Sum of Squares
  • Variance
  • Shortest String
  • Longest String

Les agrégations GROUP BY sont exécutées dans BigQuery dans les cas suivants:

  • Il suit une étape qui a déjà été poussée vers le bas.
  • Vous avez configuré l'exécution dans SQL Engine (consultez l'option Étapes pour forcer l'exécution).

Dédupliquer des agrégations

La création déroulante de transformation est disponible pour dédupliquer les agrégations dans Cloud Data Fusion 6.7.0 et versions ultérieures pour les opérations suivantes:

  • Aucune opération de filtrage n'est spécifiée
  • ANY (valeur non nulle pour le champ souhaité)
  • MIN (valeur minimale pour le champ spécifié)
  • MAX (valeur maximale du champ spécifié)

Les opérations suivantes ne sont pas prises en charge:

  • FIRST
  • LAST

Les agrégations dédupliquées sont exécutées dans le moteur SQL dans les cas suivants:

  • Il suit une étape qui a déjà été poussée vers le bas.
  • Vous avez configuré l'exécution dans SQL Engine (consultez l'option Étapes pour forcer l'exécution).

Pushdown de la source BigQuery

Le bloc déroulant source BigQuery est disponible dans Cloud Data Fusion 6.8.0 et versions ultérieures.

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 la création déroulante BigQuery source, les propriétés de partitionnement et de clustering des tables sont conservées, ce qui vous permet d'optimiser d'autres opérations, telles que les jointures.

Exigences supplémentaires

Pour utiliser une création déroulante BigQuery source, les exigences suivantes doivent être remplies:

  • Le compte de service configuré pour la création déroulante de la transformation BigQuery doit être autorisé à lire les tables de 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 déroulement de la transformation doivent être stockés dans le même emplacement.

Agrégations de fenêtres

La création déroulante de transformation est disponible pour les agrégations de fenêtres dans Cloud Data Fusion 6.9 et versions ultérieures. Les agrégations de fenêtres dans BigQuery sont compatibles avec les opérations suivantes:

  • Rank
  • Dense Rank
  • Percent Rank
  • N tile
  • Row Number
  • Median
  • Continuous Percentile
  • Lead
  • Lag
  • First
  • Last
  • Cumulative distribution
  • Accumulate

Les agrégations de fenêtres sont exécutées dans BigQuery dans les cas suivants:

  • Il suit une étape qui a déjà été poussée vers le bas.
  • Vous avez configuré l'exécution dans SQL Engine (consultez l'option Étapes pour forcer le pushdown).

Création déroulante du filtre Wrangler

La création déroulante "Filtre Wrangler" est disponible dans Cloud Data Fusion 6.9 et versions ultérieures.

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 filtrage déroulant n'est compatible qu'avec le mode SQL pour les conditions préalables, également publié dans la version 6.9. Dans ce mode, le plug-in accepte une expression de condition préalable en SQL ANSI standard.

Si le mode SQL est utilisé pour des conditions préalables, 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 conditions préalables en mode SQL.

Le mode SQL pour les conditions préalables n'est pas compatible avec les plug-ins Wrangler comportant plusieurs entrées lorsque la création déroulante de la transformation est activée. Si elle est utilisée 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:

  • Il suit une étape qui a déjà été poussée vers le bas.
  • Vous avez configuré l'exécution dans SQL Engine (consultez 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 de pipeline de transfert vers BigQuery.

Quand utiliser une création déroulante de transformation ?

L'exécution de transformations dans BigQuery implique les opérations suivantes:

  1. Écrire des enregistrements dans BigQuery pour les étapes compatibles de votre pipeline
  2. Exécuter les étapes compatibles dans BigQuery.
  3. Lire des enregistrements à partir de BigQuery après l'exécution des transformations compatibles, sauf si elles sont suivies d'un récepteur BigQuery

Selon la taille de vos ensembles de données, des frais généraux réseau importants peuvent être appliqués, ce qui peut avoir un impact négatif sur la durée d'exécution globale du pipeline lorsque la création déroulante de la transformation est activée.

En raison de la surcharge réseau, nous vous recommandons d'effectuer une redirection de la transformation dans les cas suivants:

  • Plusieurs opérations compatibles sont exécutées dans l'ordre (sans étapes entre les étapes).
  • Par rapport à Spark, les gains de performances obtenus par BigQuery lors de l'exécution des transformations l'emportent sur la latence des mouvements de données vers et éventuellement en dehors de BigQuery.

Fonctionnement

Lorsque vous exécutez un pipeline qui utilise le menu déroulant 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 de transformations:

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

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

  3. 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 Tentative de copie directe dans 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 la fonction Transformation Pushdown exécute les transformations compatibles dans BigQuery au lieu de Spark.

Pushdown de transformation vers BigQuery dans les pipelines Cloud Data Fusion

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 de cluster (nœuds) pour une charge de travail. En d'autres termes, exploitez pleinement le cluster Dataproc provisionné en utilisant pleinement le processeur et la mémoire disponibles pour votre instance, tout en profitant 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 des ressources aux étapes de votre pipeline où les enregistrements sont transférés ou extraits 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'à atteindre le nombre de cœurs de processeur utilisés par votre nœud de calcul). Les exécuteurs optimisent l'utilisation du processeur lors des étapes de sérialisation et de désérialisation, à mesure que les données entrent et sortent de BigQuery. Pour en savoir plus, consultez la section Dimensionnement d'un cluster.

L'un des avantages des transformations dans BigQuery est que vos pipelines peuvent s'exécuter sur des clusters Dataproc plus petits. Si les jointures constituent les opérations les plus gourmandes en ressources dans votre pipeline, vous pouvez tester des tailles de cluster plus petites, car les opérations JOIN lourdes sont désormais effectuées dans BigQuery, ce qui vous permet potentiellement de réduire 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 6.7.0 et versions ultérieures, la fonction Transformation Pushdown 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 global d'exécution 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 (consultez la section 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 Dataproc 2.0 et Dataproc 1.5).

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 en sortie, comme un élément ressemblant à une opération JOIN croisée, la taille de l'ensemble de données obtenue peut être de plusieurs ordres de grandeur supérieure à celle de l'ensemble de données d'entrée. Tenez également compte des frais généraux liés à la réintégration de ces enregistrements dans Spark lors du traitement Spark supplémentaire de ces enregistrements, tel qu'une transformation ou un récepteur, dans le contexte des performances globales du pipeline.

Atténuer les données biaisées

Les opérations JOIN sur des données très asymétriques peuvent entraîner le dépassement des limites d'utilisation des ressources par la tâche BigQuery, ce qui entraîne l'échec de l'opération JOIN. Pour éviter cela, accédez aux paramètres du plug-in Joiner et identifiez l'entrée asymétrique dans le champ Skewed Input Stage. Cela permet à Cloud Data Fusion d'organiser les entrées de manière à réduire le risque que l'instruction BigQuery ne dépasse les limites.

Dans les paramètres du plug-in Joiner, identifiez les données asymétriques dans le champ "Stage d'entrée asymétrique".

Étapes suivantes