CommencerCommencer gratuitement

Utiliser le broadcasting dans les jointures Spark

Rappelez-vous que les jointures de tables dans Spark sont réparties entre les workers du cluster. Si les données ne sont pas locales, diverses opérations de shuffle sont nécessaires et peuvent dégrader les performances. À la place, nous allons utiliser l’opération broadcast de Spark pour donner à chaque nœud une copie des données spécifiées.

Quelques conseils :

  • Diffusez le DataFrame le plus petit. Plus le DataFrame est volumineux, plus le transfert vers les nœuds workers prendra du temps.
  • Sur de petits DataFrames, il peut être préférable de ne pas diffuser et de laisser Spark déterminer lui-même les optimisations.
  • Si vous examinez le plan d’exécution de la requête, un broadcastHashJoin indique que vous avez correctement configuré la diffusion (broadcast).

Les DataFrames flights_df et airports_df sont à votre disposition.

Cet exercice fait partie du cours

Nettoyer des données avec PySpark

Afficher le cours

Instructions

  • Importez la méthode broadcast() depuis pyspark.sql.functions.
  • Créez un nouveau DataFrame broadcast_df en joignant flights_df avec airports_df, en utilisant le broadcasting.
  • Affichez le plan de requête et comparez-le avec l’original.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Import the broadcast method from pyspark.sql.functions
from ____ import ____

# Join the flights_df and airports_df DataFrames using broadcasting
broadcast_df = flights_df.____(____(airports_df), \
    flights_df["Destination Airport"] == airports_df["IATA"] )

# Show the query plan and compare against the original
broadcast_df.____()
Modifier et exécuter le code