Spark joins पर broadcasting का उपयोग
याद रखें कि Spark में table joins क्लस्टर वर्कर्स के बीच बाँटे जाते हैं. यदि डेटा लोकल नहीं है, तो अलग-अलग shuffle ऑपरेशंस की ज़रूरत पड़ती है और इससे परफॉर्मेंस पर नकारात्मक असर पड़ सकता है. इसकी बजाय, हम Spark के broadcast ऑपरेशंस का उपयोग करेंगे ताकि निर्दिष्ट डेटा की एक कॉपी हर नोड को मिल सके.
कुछ सुझाव:
- छोटे DataFrame को broadcast करें. DataFrame जितना बड़ा होगा, उसे वर्कर नोड्स तक ट्रांसफर करने में उतना ही ज़्यादा समय लगेगा.
- बहुत छोटे DataFrames पर, broadcasting स्किप करना बेहतर हो सकता है और Spark को अपने आप ऑप्टिमाइज़ेशन तय करने दें.
- यदि आप क्वेरी execution प्लान देखते हैं, तो broadcastHashJoin यह दर्शाता है कि आपने broadcasting सफलतापूर्वक कॉन्फ़िगर कर ली है.
DataFrames flights_df और airports_df आपके लिए उपलब्ध हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark के साथ डेटा क्लीनिंग
अभ्यास निर्देश
pyspark.sql.functionsसेbroadcast()मेथड इम्पोर्ट करें.flights_dfकोairports_dfके साथ broadcast का उपयोग करते हुए join करके एक नया DataFramebroadcast_dfबनाएँ.- क्वेरी प्लान दिखाएँ और उसे मूल से अंतर के संदर्भ में देखें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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.____()