Spark join'larında yayın (broadcast) kullanma
Unutma, Spark'ta tablo join'ları küme işçileri arasında bölünür. Veri yerel değilse, çeşitli shuffle işlemleri gerekir ve bu da performansı olumsuz etkileyebilir. Bunun yerine, belirtilen verinin bir kopyasını her düğüme vermek için Spark'ın broadcast işlemlerini kullanacağız.
Birkaç ipucu:
- Daha küçük DataFrame'i yayınla (broadcast et). DataFrame ne kadar büyükse, işçi düğümlere aktarım o kadar uzun sürer.
- Küçük DataFrame'lerde, yayınlamayı atlayıp optimizasyonu Spark'ın kendi kendine bulmasına izin vermek daha iyi olabilir.
- Sorgu yürütme planına bakarsan, bir broadcastHashJoin, yayınlamayı başarıyla yapılandırdığını gösterir.
flights_df ve airports_df DataFrame'leri kullanımına hazır.
Bu egzersiz
PySpark ile Veri Temizleme
kursunun bir parçasıdırEgzersiz talimatları
pyspark.sql.functionsiçindenbroadcast()yöntemini içe aktar.- Yayınlamayı kullanarak
flights_dfileairports_df'i join ederek yeni birbroadcast_dfDataFrame'i oluştur. - Sorgu planını göster ve orijinalden farklarını düşün.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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.____()