apache-spark
अपाचे स्पार्क से संबंधित प्रश्न कैसे पूछें?
खोज…
परिचय
इस विषय का लक्ष्य अपाचे स्पार्क से संबंधित प्रश्न पूछते समय सर्वोत्तम प्रथाओं का दस्तावेजीकरण करना है।
पर्यावरण विवरण:
जब अपाचे स्पार्क संबंधित प्रश्न पूछते हैं तो कृपया निम्नलिखित जानकारी शामिल करें
- अपाचे स्पार्क संस्करण यदि क्लाइंट और स्पार्क परिनियोजन द्वारा उपयोग किया जाता है, यदि लागू हो। एपीआई संबंधित प्रश्नों के लिए प्रमुख (1.6, 2.0, 2.1 आदि) आम तौर पर पर्याप्त है, संभावित बग से संबंधित प्रश्नों के लिए हमेशा पूर्ण संस्करण की जानकारी का उपयोग करें।
- स्केला संस्करण स्पार्क बायनेरिज़ के निर्माण के लिए उपयोग किया जाता है।
- JDK संस्करण (
java -version
)। - यदि आप अतिथि भाषा (पायथन, आर) का उपयोग करते हैं, तो कृपया भाषा संस्करण के बारे में जानकारी प्रदान करें। पायथन उपयोग टैग्स में: पायथन-2. x , पायथन-3.- x या अधिक विशिष्ट लोगों के बीच अंतर करने के लिए विशिष्ट।
- अगर लागू हो या बाहरी निर्भरता संस्करण (पायथन, आर) लागू होने पर (बिल्ड.
build.sbt
,pom.xml
) परिभाषा बनाएँ। - क्लस्टर प्रबंधक (
local[n]
, स्पार्क स्टैंडअलोन, यार्न, मेसोस), मोड (client
,cluster
) और यदि लागू हो तो अन्य विकल्प प्रस्तुत करें।
उदाहरण डेटा और कोड
उदाहरण डेटा
कृपया एक प्रारूप में एक न्यूनतम उदाहरण इनपुट डेटा प्रदान करने का प्रयास करें, जिसका उपयोग सीधे बिना थकाऊ और समय लेने वाले उदाहरण के लिए किया जा सकता है, उदाहरण के लिए इनपुट फ़ाइल या स्थानीय संग्रह के लिए पार्सिंग का उपयोग करके वितरित डेटा संरचनाओं को बनाने के लिए आवश्यक सभी कोड।
जब लागू हो तो हमेशा प्रकार की जानकारी शामिल करें:
- RDD आधारित API में जब आवश्यक हो तो एनोटेशन का उपयोग करें।
- DataFrame आधारित एपीआई में एक के रूप में स्कीमा जानकारी प्रदान करते हैं
StrucType
या से उत्पादनDataset.printSchema
।
Dataset.show
या print
से आउटपुट अच्छा लग सकता है लेकिन हमें अंतर्निहित प्रकारों के बारे में कुछ नहीं बताता है।
विशेष समस्या केवल पैमाने पर इस्तेमाल यादृच्छिक डेटा जेनरेटर में होता है (स्पार्क में कुछ उपयोगी उपयोगिताओं प्रदान करता है org.apache.spark.mllib.random.RandomRDDs
और org.apache.spark.graphx.util.GraphGenerators
कोड
कृपया जब संभव हो तो टाइप एनोटेशन का उपयोग करें। जबकि आपका कंपाइलर आसानी से उन प्रकारों का ट्रैक रख सकता है जो केवल नश्वर लोगों के लिए इतना आसान नहीं है। उदाहरण के लिए:
val lines: RDD[String] = rdd.map(someFunction)
या
def f(x: String): Int = ???
इससे बेहतर हैं:
val lines = rdd.map(someFunction)
तथा
def f(x: String) = ???
क्रमशः।
नैदानिक जानकारी
डिबगिंग प्रश्न।
जब प्रश्न विशिष्ट डीबगिंग से संबंधित होता है तो हमेशा प्रासंगिक ट्रेसबैक प्रदान करें। हालांकि डुप्लिकेट किए गए आउटपुट (विभिन्न निष्पादकों या प्रयासों से) को हटाने के लिए सलाह दी जाती है कि केवल एक लाइन या अपवाद वर्ग में ट्रेसबैक न काटें।
प्रदर्शन के सवाल।
संदर्भ के आधार पर विवरण प्रदान करने का प्रयास करें:
-
RDD.debugString
/Dataset.explain
। - विशेष स्थिति में लागू होने पर DAG आरेख के साथ स्पार्क UI से आउटपुट।
- प्रासंगिक लॉग संदेश।
- बाह्य उपकरणों (गंगालिया, विजुअलवीएम) द्वारा एकत्र की गई नैदानिक जानकारी।
पूछने से पहले
- डुप्लिकेट प्रश्नों के लिए स्टैक ओवरफ्लो खोजें। समस्याओं का एक सामान्य वर्ग जो पहले से ही बड़े पैमाने पर प्रलेखित किया गया है।
- पढ़ें मैं एक अच्छा सवाल कैसे पूछूं? ।
- पढ़ें कि मैं यहां किन विषयों के बारे में पूछ सकता हूं?
- अपाचे स्पार्क सामुदायिक संसाधन