मैं एचडीएफएस का उपयोग कर क्लस्टर पर अपाचे स्पार्क के साथ काम कर रहा हूं। जहां तक मैं समझता हूं, एचडीएफएस डेटा-नोड्स पर फाइलें वितरित कर रहा है। तो यदि फाइल सिस्टम पर एक "file.txt" डाला गया है, तो इसे विभाजन में विभाजित किया जाएगा। अब मैंस्पार्क विभाजन (आईएनजी) एचडीएफएस में फाइलों पर कैसे काम करता है?
rdd = SparkContext().textFile("hdfs://.../file.txt")
अपाचे स्पार्क से फोन कर रहा हूँ
। क्या अब फाइल सिस्टम पर "file.txt" के रूप में स्वचालित रूप से समान विभाजन हैं? क्या होता है जब मैं
rdd.repartition(x)
जहां x> तो विभाजन HDFS द्वारा इस्तेमाल किया कहते हैं? स्पार्क शारीरिक रूप से एचडीएफएस पर डेटा को स्थानीय रूप से काम करने के लिए पुनर्व्यवस्थित करेगा?
उदाहरण: मैंने एचडीएफएस-सिस्टम पर 30 जीबी टेक्स्टफाइल डाला, जो इसे 10 नोड्स पर वितरित कर रहा है। स्पार्क ए) उसी 10 पार्टिटन्स का उपयोग करेगा? और बी) जब मैं पुनर्गठन (1000) कहता हूं तो क्लस्टर में 30 जीबी को घुमाएं?
तो, मैं RDD = SparkContext() 'है कि इस से लेने में सही कर textfile (" HDFS: //.../file.txt ")।' परिणामस्वरूप एक आरडीडी होगा जो ब्लॉक की समान संख्या में विभाजित है क्योंकि फाइल एचडीएफएस में संग्रहीत है? और यदि आप इसे 'rdd.repartition (x) 'reparation करते हैं तो इसे अधिक विभाजन में प्राप्त करना संभव है? – monster
बिल्कुल नहीं। आदर्श रूप से आपको एचडीएफएस में दिखाई देने वाले ब्लॉक की एक ही संख्या मिल जाएगी। लेकिन अगर आपकी फ़ाइल में रेखाएं बहुत लंबी हैं (ब्लॉक आकार से अधिक), विभाजन की मात्रा कम होगी। इस मामले में विभाजन की संख्या को बदलने का पसंदीदा तरीका सीधे इसे 'rdd = स्पार्ककॉन्टेक्स्ट() पर पाठित करना है। टेक्स्टफाइल ("hdfs: //.../file.txt", 400) ', जहां 400 है विभाजन की संख्या। इस मामले में 400 विभाजन में विभाजन करना हैडोप टेक्स्ट इनपुटपुट द्वारा किया जाएगा, स्पार्क नहीं और यह बहुत तेज़ काम करेगा। स्पार्क 'रिपर्टिशन()' क्लस्टर में डेटा को घुमाएगा, वास्तव में कुशल नहीं है – 0x0FFF
आपके महान प्रश्न और उत्तर के लिए धन्यवाद! क्या आप कृपया "400 स्प्लिट्स में विभाजन करना हैडोप टेक्स्ट इनपुटपुट द्वारा किया जाएगा" के मामले की व्याख्या कर सकते हैं? –