स्पार्क एसक्यूएल में बड़े डेटाफ्रेम में शामिल होने पर मुझे Missing an output location for shuffle से एक ही त्रुटि मिल रही है। MEMORY_AND_DISK और/या spark.shuffle.memoryFraction 0 सेट करने की सिफारिश है। हालांकि, spark.shuffle.memoryFraction स्पार्क> = 1.6.0 में बहिष्कृत है और MEMORY_AND_DISK को सेट करने में मदद नहीं करनी चाहिए यदि मैं किसी भी आरडीडी या डेटाफ्रेम को कैश नहीं कर रहा हूं, है ना? इसके अलावा मुझे कई अन्य वॉर्न लॉग और कार्य रिट्री मिल रही हैं जो मुझे यह सोचने के लिए प्रेरित करती हैं कि नौकरी स्थिर नहीं है।स्पार्क एसक्यूएल में बड़े डेटाफ्रेम में कैसे शामिल हों? (सर्वोत्तम प्रथाओं, स्थिरता, प्रदर्शन)
इसलिए, मेरा सवाल यह है:
- क्या स्पार्क एसक्यूएल> = 1.6.0 में भारी dataframes शामिल होने के लिए सर्वोत्तम प्रथाओं कर रहे हैं?
अधिक विशिष्ट प्रश्न हैं:
- कैसे धुन निष्पादकों और spark.sql.shuffle.partitions की संख्या बेहतर स्थिरता/प्रदर्शन को प्राप्त करने के लिए?
- समांतरता समांतरता के स्तर (निष्पादकों/कोर की संख्या) और विभाजनों की संख्या के बीच सही संतुलन कैसे प्राप्त करें? मैंने पाया है कि निष्पादकों की संख्या में वृद्धि हमेशा समाधान नहीं होती है क्योंकि यह उत्पन्न हो सकता है I/O पढ़ने के समय नेटवर्क यातायात के कारण अपवाद।
- क्या इस उद्देश्य के लिए कोई अन्य प्रासंगिक पैरामीटर ट्यून किया गया है?
- मेरी समझ यह है कि ORC या पर संग्रहीत डेटा में शामिल होने के लिए पैराक्वेट संचालन में शामिल होने के लिए टेक्स्ट या एवरो से बेहतर प्रदर्शन प्रदान करता है। क्या लकड़ी और ओआरसी के बीच कोई महत्वपूर्ण अंतर है?
- क्या SQLContext बनाम HiveContext संचालन के लिए स्थिरता/प्रदर्शन के संबंध में कोई लाभ है?
- वहाँ एक अंतर प्रदर्शन/स्थिरता के बारे में है जब dataframes में शामिल होने में शामिल पहले से registerTempTable() या saveAsTable() कर रहे हैं?
अब तक मैं this is answer और this chapter का प्रारंभिक बिंदु के रूप में उपयोग कर रहा हूं। और इस विषय से संबंधित कुछ और स्टैक ओवरफ्लो पृष्ठ हैं। फिर भी मुझे इस लोकप्रिय मुद्दे का व्यापक उत्तर नहीं मिला है।
अग्रिम धन्यवाद।
इस जवाब के रूप में स्पार्क फेरबदल किताब रखने के लिए एक अलग डेटा संरचना का उपयोग करता है, 2000 से ऊपर spark.sql.shuffle.partitions स्थापित करने के लिए जब वहाँ स्मृति मुद्दों फेरबदल कर रहे हैं विभाजन की संख्या है जब की सिफारिश की जाती है उस दहलीज से अधिक: http://stackoverflow.com/a/36459198/2482894 – leo9r
स्पार्क.yarn.executor.memoryOverhead = 1024 को इस उत्तर में अनुशंसित किया गया है: http://stackoverflow.com/a/33118489/2482894 – leo9r