hadoop - जर्जर बनाम ओआरसी बनाम ओआरसी




hive parquet (4)

Parquet और ORC दोनों के अपने फायदे और नुकसान हैं। लेकिन मैं बस अंगूठे के एक सरल नियम का पालन करने की कोशिश करता हूं - "आपका डेटा कितना नेस्टेड है और कितने कॉलम हैं" । यदि आप Google Dremel का अनुसरण करते हैं, तो आप पा सकते हैं कि कैसे लकड़ी की छत डिजाइन की गई है। वे डेटा संग्रहीत करने के लिए एक पदानुक्रमित वृक्ष जैसी संरचना बनाते हैं। अधिक घोंसले के शिकार पेड़ को गहरा करते हैं।

लेकिन ORC एक चपटा फ़ाइल स्टोर के लिए डिज़ाइन किया गया है। इसलिए यदि आपका डेटा कम स्तंभों के साथ समतल है, तो आप ORC के साथ जा सकते हैं, अन्यथा, आपके लिए लकड़ी की छत ठीक रहेगा। चपटा डेटा पर संपीड़न ORC में आश्चर्यजनक रूप से काम करता है।

हमने एक बड़ी चपटी फाइल के साथ कुछ बेंचमार्किंग की, इसे डेटाफ्रेम स्पार्क में परिवर्तित किया और इसे S3 में Parquet और ORC दोनों प्रारूप में संग्रहीत किया और ** Redshift-Spectrum ** के साथ क्वेरी की।

Size of the file in parquet: ~7.5 GB and took 7 minutes to write
Size of the file in ORC: ~7.1. GB and took 6 minutes to write
Query seems faster in ORC files.

जल्द ही हम नेस्टेड डेटा के लिए कुछ बेंचमार्किंग करेंगे और यहां परिणाम अपडेट करेंगे।

मैं हाइव के साथ उपलब्ध भंडारण प्रारूपों पर कुछ परीक्षण चला रहा हूं और प्रमुख विकल्पों के रूप में लकड़ी की छत और ORC का उपयोग कर रहा हूं। मैंने ओआरसी को एक बार डिफ़ॉल्ट संपीड़न के साथ और एक बार स्नैपी के साथ शामिल किया।

मैंने कई दस्तावेज पढ़े हैं जो ओआरसी की तुलना में समय / स्थान की जटिलता में बेहतर होने के लिए राज्य Parquet बेहतर है लेकिन मेरे परीक्षण मेरे द्वारा गए दस्तावेजों के विपरीत हैं।

मेरे डेटा के कुछ विवरण का अनुसरण करता है।

Table A- Text File Format- 2.5GB

Table B - ORC - 652MB

Table C - ORC with Snappy - 802MB

Table D - Parquet - 1.9 GB

जहां तक ​​मेरी मेज के लिए संपीड़न का संबंध है, तब तक लकड़ी की छत सबसे खराब थी।

उपरोक्त तालिका के साथ मेरे परीक्षणों के बाद परिणाम मिले।

पंक्ति गणना ऑपरेशन

Text Format Cumulative CPU - 123.33 sec

Parquet Format Cumulative CPU - 204.92 sec

ORC Format Cumulative CPU - 119.99 sec 

ORC with SNAPPY Cumulative CPU - 107.05 sec

एक कॉलम ऑपरेशन का योग

Text Format Cumulative CPU - 127.85 sec   

Parquet Format Cumulative CPU - 255.2 sec   

ORC Format Cumulative CPU - 120.48 sec   

ORC with SNAPPY Cumulative CPU - 98.27 sec

एक कॉलम ऑपरेशन का औसत

Text Format Cumulative CPU - 128.79 sec

Parquet Format Cumulative CPU - 211.73 sec    

ORC Format Cumulative CPU - 165.5 sec   

ORC with SNAPPY Cumulative CPU - 135.45 sec 

जहां क्लॉज का उपयोग करके किसी दिए गए रेंज से 4 कॉलम का चयन करना

Text Format Cumulative CPU -  72.48 sec 

Parquet Format Cumulative CPU - 136.4 sec       

ORC Format Cumulative CPU - 96.63 sec 

ORC with SNAPPY Cumulative CPU - 82.05 sec 

क्या इसका मतलब ओआरसी तेज है और फिर लकड़ी की छत? या ऐसा कुछ है जो मैं क्वेरी प्रतिक्रिया समय और संपीड़न अनुपात के साथ इसे बेहतर बनाने के लिए कर सकता हूं?

धन्यवाद!


आप इसे देख रहे हैं क्योंकि:

  • हाइव में एक सदिश ORC पाठक है, लेकिन कोई सदिश पैराशूट रीडर नहीं है।

  • स्पार्क में एक वेक्टरकृत पैराकिट रीडर और कोई वेक्टर ओआरसी रीडर नहीं है।

  • स्पार्क लकड़ी की छत के साथ सबसे अच्छा प्रदर्शन करता है, हाइव ORC के साथ सबसे अच्छा प्रदर्शन करता है।

ORC और Parquet को स्पार्क के साथ चलाते समय मैंने समान अंतर देखा है।

वैश्वीकरण का मतलब है कि पंक्तियों को बैचों में डिकोड किया जाता है, नाटकीय रूप से मेमोरी लोकलिटी और कैश उपयोग में सुधार होता है।

(हाइव 2.0 और स्पार्क 2.1 के रूप में सही)


मैं कहूंगा, कि इन दोनों प्रारूपों के अपने फायदे हैं।

यदि आपके पास अत्यधिक नेस्टेड डेटा है, तो लकड़ी की छत बेहतर हो सकती है, क्योंकि यह अपने तत्वों को एक पेड़ के रूप में संग्रहीत करता है जैसे कि Google Dremel करता है ( यहां देखें )।
यदि आपकी फ़ाइल-संरचना चपटी है, तो Apache ORC बेहतर हो सकता है।

और जहां तक ​​मुझे पता है कि लकड़ी की छत अभी तक इंडेक्स का समर्थन नहीं करती है। ओआरसी एक हल्के वजन सूचकांक के साथ आता है और हाइव 0.14 के बाद से एक अतिरिक्त ब्लूम फ़िल्टर होता है जो बेहतर क्वेरी प्रतिक्रिया समय के लिए सहायक हो सकता है विशेष रूप से जब यह राशि के संचालन के लिए आता है।

लकड़ी की छत डिफ़ॉल्ट संपीड़न SNAPPY है। क्या टेबल A - B - C और D एक ही डेटासेट पकड़े हुए हैं? यदि हां ऐसा लगता है कि इसके बारे में कुछ छायादार है, जब यह केवल 1.9 जीबी तक संपीड़ित करता है


हमने अलग-अलग उपयोग के मामलों में अलग-अलग फ़ाइल स्वरूपों (एवरो, JSON, ORC, और लकड़ी की छत) की तुलना करते हुए कुछ बेंचमार्क किया।

https://www.slideshare.net/oom65/file-format-benchmarks-avro-json-orc-parquet

डेटा सार्वजनिक रूप से उपलब्ध है और बेंचमार्क कोड सभी खुले स्रोत हैं:

https://github.com/apache/orc/tree/branch-1.4/java/bench







orc