मैं अपने स्थानीय मशीन और क्लस्टर में स्पार्क कोड चलाता हूं।
मैं निम्नलिखित कोड वाली स्थानीय मशीन के लिए SparkContext ऑब्जेक्ट बनाता हूं:
val sc = new SparkContext("local[*]", "Trial")
मैं निम्नलिखित कोड वाले क्लस्टर के लिए SparkContext ऑब्जेक्ट बनाता हूं:
val spark = SparkSession.builder.appName(args(0)+" "+args(1)).getOrCreate()
val sc = spark.sparkContext
और मैंने निम्नलिखित कोड के साथ स्थानीय मशीन और क्लस्टर के लिए विभाजन की संख्या 4 बताई
val dataset = sc.textFile("Dataset.txt", 4)
अपने क्लस्टर में, मैंने 5 श्रमिक बनाए। उनमें से एक ड्राइवर नोड है, उनमें से बाकी कार्यकर्ता के रूप में चलते हैं।
मुझे उम्मीद है कि परिणाम समान होने चाहिए। हालांकि, दो भागों के परिणाम जो स्थानीय हैं और क्लस्टर अलग हैं। समस्या के कारण क्या हैं?
उत्तर:
जवाब के लिए 0 № 1मैं निम्नलिखित कोड के साथ स्थानीय मशीन के लिए SparkContext ऑब्जेक्ट बनाता हूं
तथा
मैं निम्नलिखित कोड वाले क्लस्टर के लिए SparkContext ऑब्जेक्ट बनाता हूं:
यह प्रकट होता है हो सकता है कि आपने दो अलग-अलग परिवेशों को परिभाषित किया हो sc
तथा spark
जैसा कि आप परिभाषित करते हैं local[*]
स्पष्ट रूप से sc
के लिए कुछ डिफ़ॉल्ट मान लेते समय spark
(जो बाहरी कॉन्फ़िगरेशन फ़ाइलों को पढ़ सकता है या तथाकथित मास्टर URL से ले सकता है spark-submit
)।
इन हो सकता है अलग हो जाओ हो सकता है जो आप उपयोग करते हैं उसे प्रभावित करें।
मुझे उम्मीद है कि परिणाम समान होने चाहिए। हालांकि, दो भागों के परिणाम जो स्थानीय हैं और क्लस्टर अलग हैं। समस्या के कारण क्या हैं?
Dataset.txt
आप स्थानीय बनाम क्लस्टर वातावरण में प्रक्रिया कर रहे हैंअलग और इसलिए परिणामों में अंतर। मैं भविष्य में इस तरह के "आश्चर्य" से बचने के लिए एचडीएफएस या किसी अन्य साझा फ़ाइल सिस्टम का उपयोग करने की दृढ़ता से सलाह देता हूं।