खोज…


टिप्पणियों

एक बात ध्यान देने योग्य है कि आपके संसाधन बनाम डेटा का आकार जो आप शामिल हो रहे हैं। यह वह जगह है जहाँ आपका स्पार्क जॉइन कोड आपको मेमोरी एरर देने में विफल हो सकता है। इस कारण से सुनिश्चित करें कि आपने डेटा के आकार के आधार पर अपने स्पार्क नौकरियों को अच्छी तरह से कॉन्फ़िगर किया है। निम्नलिखित 1.5 मिलियन से 200 मिलियन तक जुड़ने के लिए कॉन्फ़िगरेशन का एक उदाहरण है।

स्पार्क-शेल का उपयोग करना

spark-shell   --executor-memory 32G   --num-executors 80  --driver-memory 10g --executor-cores 10   

स्पार्क सबमिट का उपयोग करना

spark-submit   --executor-memory 32G   --num-executors 80  --driver-memory 10g --executor-cores 10 code.jar 

ब्रॉडकास्ट हैश ज्वाइन इन स्पार्क

एक प्रसारण कार्यकर्ता के नोड्स के छोटे डेटा को कॉपी करता है जो अत्यधिक कुशल और सुपर-फास्ट में शामिल होता है। जब हम दो डेटासेट में शामिल हो रहे हैं और एक डेटासेट दूसरे की तुलना में बहुत छोटा है (जैसे जब छोटा डेटासेट मेमोरी में फिट हो सकता है), तो हमें ब्रॉडकास्ट हैश जॉइन का उपयोग करना चाहिए।

निम्नलिखित छवि एक ब्रॉडकास्ट हैश से जुड़ती है जिसमें छोटे डेटासेट को बड़े डेटासेट के प्रत्येक विभाजन पर प्रसारित किया जाता है।

यहाँ छवि विवरण दर्ज करें

निम्नलिखित कोड नमूना है जिसे आप आसानी से कार्यान्वित कर सकते हैं यदि आपके पास एक बड़े और छोटे डेटासेट के समान परिदृश्य में शामिल हों।

case class SmallData(col1: String, col2:String, col3:String, col4:Int, col5:Int)
 
val small = sc.textFile("/datasource")
 
val df1 = sm_data.map(_.split("\\|")).map(attr => SmallData(attr(0).toString, attr(1).toString, attr(2).toString, attr(3).toInt, attr(4).toInt)).toDF()
 
val lg_data = sc.textFile("/datasource")
 
case class LargeData(col1: Int, col2: String, col3: Int)
 
val LargeDataFrame = lg_data.map(_.split("\\|")).map(attr => LargeData(attr(0).toInt, attr(2).toString, attr(3).toInt)).toDF()
 
 
val joinDF = LargeDataFrame.join(broadcast(smallDataFrame), "key")


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow