9

स्पार्क एसक्यूएल में बड़े डेटाफ्रेम में शामिल होने पर मुझे 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 का प्रारंभिक बिंदु के रूप में उपयोग कर रहा हूं। और इस विषय से संबंधित कुछ और स्टैक ओवरफ्लो पृष्ठ हैं। फिर भी मुझे इस लोकप्रिय मुद्दे का व्यापक उत्तर नहीं मिला है।

अग्रिम धन्यवाद।

+1

इस जवाब के रूप में स्पार्क फेरबदल किताब रखने के लिए एक अलग डेटा संरचना का उपयोग करता है, 2000 से ऊपर spark.sql.shuffle.partitions स्थापित करने के लिए जब वहाँ स्मृति मुद्दों फेरबदल कर रहे हैं विभाजन की संख्या है जब की सिफारिश की जाती है उस दहलीज से अधिक: http://stackoverflow.com/a/36459198/2482894 – leo9r

+1

स्पार्क.yarn.executor.memoryOverhead = 1024 को इस उत्तर में अनुशंसित किया गया है: http://stackoverflow.com/a/33118489/2482894 – leo9r

उत्तर

0

यह बहुत सारे प्रश्न हैं। मुझे इन्हें एक-एक जवाब देने की अनुमति दें:

आपके अधिकारियों की संख्या उत्पादन वातावरण में अधिकतर समय परिवर्तनीय है। यह उपलब्ध संसाधनों पर निर्भर करता है। जब आप शफल कर रहे हैं तो विभाजन की संख्या महत्वपूर्ण है। यह मानते हुए कि आपका डेटा अब खराब हो गया है, आप विभाजन की संख्या बढ़ाकर प्रति कार्य भार कम कर सकते हैं। एक कार्य आदर्श रूप से कुछ शून्य लेना चाहिए। यदि कार्य बहुत लंबा लगता है, तो यह संभव है कि आपका कंटेनर पूर्व-खाली हो जाए और काम गुम हो जाए।यदि कार्य केवल कुछ मिलीसेकंड लेता है, तो कार्य शुरू करने का ऊपरी भाग प्रभावी हो जाता है।

समानांतरवाद के स्तर और अपने निष्पादक आकार ट्यूनिंग, मैं क्लाउडेरा द्वारा उत्कृष्ट मार्गदर्शिका देखें चाहते हैं: https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

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

आपको HiveContext के बजाय SQLContext का उपयोग करना चाहिए, क्योंकि HiveContext को बहिष्कृत किया गया है। SQLContext अधिक सामान्य है और न केवल हाइव के साथ काम करता है।

registerTempTable प्रदर्शन करते समय, डेटा स्पार्क सत्र में संग्रहीत किया जाता है। यह शामिल होने के निष्पादन को प्रभावित नहीं करता है। यह क्या स्टोर करता है केवल निष्पादन योजना है जो एक क्रिया निष्पादित होने पर लागू होती है (उदाहरण के लिए saveAsTable)। saveAsTable निष्पादित करते समय डेटा वितरित फ़ाइल सिस्टम पर संग्रहीत हो जाता है।

उम्मीद है कि इससे मदद मिलती है। मैं स्पार्क शिखर सम्मेलन में शामिल होने के बारे में हमारी बातों को देखने का भी सुझाव दूंगा: https://www.youtube.com/watch?v=6zg7NTw-kTQ। यह आपको कुछ अंतर्दृष्टि प्रदान कर सकता है।

चीयर्स, Fokko

संबंधित मुद्दे