2015-10-22 15 views
7

से खाली विभाजन निकालें मैं एचडीएफएस से डेटा ला रहा हूं और इसे स्पार्क आरडीडी में संग्रहीत कर रहा हूं। स्पार्क एचडीएफएस ब्लॉक की संख्या के आधार पर विभाजन की संख्या बनाता है। इससे बड़ी संख्या में खाली विभाजन होते हैं जो पाइपिंग के दौरान भी संसाधित होते हैं। इस ओवरहेड को हटाने के लिए, मैं आरडीडी से सभी खाली विभाजन को फ़िल्टर करना चाहता हूं। मुझे सहवास और पुनरावृत्ति के बारे में पता है, लेकिन इस बात की कोई गारंटी नहीं है कि सभी खाली विभाजन हटा दिए जाएंगे।स्पार्क आरडीडी

क्या इस बारे में जाने का कोई और तरीका है?

+0

"* इससे बड़ी संख्या में खाली विभाजन होते हैं जो पाइपिंग के दौरान भी संसाधित होते हैं *" मुझे यह वाक्य समझ में नहीं आता है। यह खाली विभाजन क्यों और कब बनाए जाते हैं? –

+0

मान लीजिए कि मैं हाइव का उपयोग कर डेटा ला रहा हूं और मेरे एचडीएफएस में दिए गए हाइव टेबल के लिए 500 फाइल ब्लॉक हैं, उस मामले में 500 विभाजन आरडीडी में बनाए जाएंगे। बाद में समूहबीकी करते समय, खाली विभाजन छोड़ दिए जाते हैं। – user3898179

+1

यदि आपके पास अपने डेटा के बारे में कुछ प्राथमिकता है तो आप 'रेंजपार्टिशनर' या 'हैशपार्टिशनर' का उपयोग करके पुनः विभाजन कर सकते हैं। यदि नहीं, तो आप यादृच्छिक संख्याओं के आधार पर विभाजन का उपयोग कर सकते हैं। – zero323

उत्तर

1

आरडीडी से खाली विभाजन को हटाने का कोई आसान तरीका नहीं है।

coalesce गारंटी नहीं देता है कि खाली विभाजन हटा दिए जाएंगे। यदि आपके पास 40 रिक्त विभाजन और डेटा के साथ 10 विभाजन वाले आरडीडी हैं, तो rdd.coalesce(45) के बाद भी खाली विभाजन होंगे।

repartition विधि सभी विभाजनों पर समान रूप से डेटा को विभाजित करती है, इसलिए कोई खाली विभाजन नहीं होगा। यदि आपके पास 50 रिक्त विभाजन और डेटा के साथ 10 विभाजन हैं और rdd.repartition(20) चलाते हैं, तो डेटा को 20 विभाजनों में समान रूप से विभाजित किया जाएगा।

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