CommencerCommencer gratuitement

Utilisation de la diffusion sur les jointures Spark

N'oubliez pas que les jointures de tableaux dans Spark sont réparties entre les travailleurs du cluster. Si les données ne sont pas locales, diverses opérations de brassage sont nécessaires et peuvent avoir un impact négatif sur les performances. Au lieu de cela, nous allons utiliser les opérations broadcast de Spark pour donner à chaque nœud une copie des données spécifiées.

Quelques conseils :

  • Diffusez le DataFrame plus petit. Plus le DataFrame est grand, plus le temps de transfert vers les nœuds de travail est important.
  • Sur les DataFrame de petite taille, il peut être préférable d'ignorer la diffusion et de laisser Spark se débrouiller tout seul pour l'optimisation.
  • Si vous regardez le plan d'exécution de la requête, un broadcastHashJoin indique que vous avez configuré avec succès la diffusion.

Les DataFrame 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() à partir de pyspark.sql.functions.
  • Créez un nouveau DataFrame broadcast_df en joignant flights_df à airports_df, à l'aide de la diffusion.
  • Montrez le plan d'interrogation et tenez compte des différences par rapport à 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