hadoop - सुअर और हाइव के बीच अंतर? दोनों क्यों हैं?




hive apache-pig (13)

  1. पिग-लैटिन डेटा प्रवाह शैली है, सॉफ्टवेयर इंजीनियर के लिए अधिक उपयुक्त है। जबकि एसक्यूएल एनालिटिक्स व्यक्ति के लिए अधिक उपयुक्त है जो एसक्यूएल में उपयोग किया जाता है। जटिल कार्य के लिए, हाइव के लिए आपको मध्यवर्ती डेटा स्टोर करने के लिए मैन्युअल रूप से अस्थायी तालिका बनाने के लिए मैन्युअल रूप से बनाना होगा, लेकिन यह सुअर के लिए आवश्यक नहीं है।

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

  3. सुअर में यूडीएफ लिखना मेरी राय में हाइव से ज्यादा आसान है।

  4. सुअर में कोई मेटाडाटा समर्थन नहीं है, (या यह वैकल्पिक है, भविष्य में यह एचसीटीएल को एकीकृत कर सकता है)। हाइव में डेटाबेस में संग्रहीत टेबल 'मेटाडेटा है।

  5. आप स्थानीय पर्यावरण में सुअर स्क्रिप्ट को डीबग कर सकते हैं, लेकिन ऐसा करने के लिए हाइव करना मुश्किल होगा। कारण बिंदु 3 है। आपको अपने स्थानीय पर्यावरण में हाइव मेटाडेटा सेट करने की आवश्यकता है, बहुत समय लेने वाला।

मेरी पृष्ठभूमि - हडोप दुनिया में 4 सप्ताह पुरानी। क्लौडेरा के हैडोप वीएम का उपयोग करके हाइव, पिग और हाडोप में थोड़ा सा डब किया। मानचित्र-कमी और जीएफएस ( पीडीएफ लिंक ) पर Google के पेपर को पढ़ा है।

मैं समझता हूँ कि-

  • सुअर की भाषा पिग लैटिन एक शिफ्ट है (प्रोग्रामर सोचने के तरीके के अनुरूप है) एसक्यूएल प्रोग्रामिंग की घोषणात्मक शैली और हाइव की क्वेरी भाषा एसक्यूएल जैसा दिखता है।

  • सुअर हडोप के शीर्ष पर बैठता है और सिद्धांत रूप में भी ड्रायड के शीर्ष पर बैठ सकता है। मैं गलत हो सकता हूं लेकिन हाइव हडोप के साथ निकटता से जुड़ा हुआ है।

  • पिग लैटिन और हाइव दोनों आदेश मानचित्र पर संकलित करते हैं और नौकरियों को कम करते हैं।

मेरा सवाल - एक होने का लक्ष्य क्या है (एक सुअर कहें) उद्देश्य को पूरा कर सकता है। क्या यह सिर्फ इसलिए है क्योंकि सुअर याहू द्वारा सुसमाचार प्रचारित है! और फेसबुक द्वारा हाइव?


आप सुअर / हाइव प्रश्नों के साथ समान परिणाम प्राप्त कर सकते हैं। मुख्य अंतर समझने / लिखने / प्रश्न बनाने के दृष्टिकोण के भीतर है।

सुअर डेटा का प्रवाह पैदा करता है: छोटे कदम जहां आप प्रत्येक प्रसंस्करण करते हैं
हाइव आपको अपने डेटा पर काम करने के लिए एसक्यूएल जैसी भाषा देता है, इसलिए आरडीबीएमएस से रूपांतरण बहुत आसान है (सुअर किसी ऐसे व्यक्ति के लिए आसान हो सकता है जिसने एसक्यूएल के साथ पहले अनुभव नहीं किया हो)

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

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


इस लिंक में पीआईजी और HIVE के बीच अंतर पढ़ें।

http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features

सभी पहलुओं को दिया जाता है। यदि आप भ्रम में हैं जो चुनना है तो आपको उस वेब पेज को देखना होगा।


एक "dezyre" आलेख से एक अखरोट खोल में पिग बनाम हाइव तुलना पर एक नज़र डालें

एचआईवी पीआईजी से बेहतर है: विभाजन, सर्वर, वेब इंटरफ़ेस और जेडीबीसी / ओडीबीसी समर्थन।

कुछ अंतर:

  1. संरचित डेटा और पीआईजी अर्ध संरचित डेटा के लिए सबसे अच्छा है

  2. प्रोग्रामिंग के लिए रिपोर्टिंग और पीआईजी के लिए हाइव का उपयोग किया जाता है

  3. हाइव को एक प्रक्रियात्मक भाषा के रूप में घोषणात्मक एसक्यूएल और पीआईजी के रूप में उपयोग किया जाता है

  4. हाइव विभाजन का समर्थन करता है और पीआईजी नहीं करता है

  5. हाइव वैकल्पिक ट्र्रिफ्ट आधारित सर्वर शुरू कर सकता है और पीआईजी नहीं कर सकता है

  6. हाइव पहले से टेबल को परिभाषित करता है ( स्कीमा ) + डेटाबेस में स्कीमा जानकारी संग्रहीत करता है और पीआईजी में डेटाबेस का समर्पित मेटाडेटा नहीं होता है

  7. हाइव एवरो का समर्थन नहीं करता है लेकिन पीआईजी करता है। संपादित करें: हाइव एवरो का समर्थन करता है, serde को org.apache.hadoop.hive.serde2.avro के रूप में निर्दिष्ट करें

  8. सुअर बाहरी जोड़ों के प्रदर्शन के लिए अतिरिक्त कोग्राउप सुविधा का भी समर्थन करता है लेकिन हाइव नहीं करता है। लेकिन दोनों हाइव और पीआईजी गतिशील रूप से शामिल हो सकते हैं , क्रमबद्ध और क्रमबद्ध कर सकते हैं।




मैंने इसे सबसे उपयोगी पाया (हालांकि, यह एक वर्ष पुराना है) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo

यह विशेष रूप से पिग बनाम हाइव और याहू में कब और कहां नियोजित है, के बारे में बात करता है। मुझे यह बहुत अंतर्दृष्टि मिली। कुछ दिलचस्प नोट्स:

डेटा सेट में वृद्धिशील परिवर्तन / अपडेट पर:

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

स्ट्रीमिंग के माध्यम से अन्य टूल्स का उपयोग करने पर:

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

डेटा वेयरहाउसिंग के लिए हाइव का उपयोग करने पर:

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

हैडोप सबप्रोजेक्ट हाइव हडोप के लिए एक एसक्यूएल इंटरफेस और रिलेशनल मॉडल प्रदान करता है। हाइव टीम ने ओडीबीसी जैसे इंटरफेस के माध्यम से बीआई टूल्स के साथ एकीकृत करने के लिए काम शुरू कर दिया है।


याहू में सुअर आर्किटेक्ट एलन गेट्स से इस post को देखें, जो तुलना करता है कि जब सुअर की तरह एसक्यूएल की तरह एचआईवी का उपयोग किया जाएगा। वह एक प्रक्रियात्मक भाषा की उपयोगिता जैसे कि सुअर (बनाम घोषणात्मक एसक्यूएल) और डेटाफ्लो डिजाइनरों के लिए इसकी उपयोगिता के उपयोग के रूप में एक बहुत ही दृढ़ मामला बनाता है।


संक्षेप में दोनों का बहुत उच्च स्तर का अवलोकन देने के लिए:

1) सुअर हडूप पर एक रिलेशनल बीजगणित है

2) हाइव एक एसक्यूएल हैडऑप (सुअर के ऊपर एक स्तर)


सरल शब्दों में, सुअर हडोप के साथ उपयोग किए गए मैपरेडस प्रोग्राम बनाने के लिए एक उच्च स्तरीय मंच है, सुअर स्क्रिप्ट का उपयोग करके हम बड़ी मात्रा में डेटा वांछित प्रारूप में संसाधित करेंगे।

एक बार संसाधित डेटा प्राप्त हो जाने के बाद, वांछित परिणाम प्राप्त करने के लिए बाद में प्रसंस्करण के लिए यह संसाधित डेटा एचडीएफएस में रखा जाता है।

संग्रहीत संसाधित डेटा के शीर्ष पर हम वांछित परिणाम प्राप्त करने के लिए HIVE SQL आदेश लागू करेंगे, आंतरिक रूप से यह हाइव एसक्यूएल कमांड एमएपी प्रोग्राम को कम करता है।


सुअर पाइपलाइन में किसी भी बिंदु पर डेटा और उपयोगकर्ता कोड लोड करने की अनुमति देता है। यह डेटा विशेष रूप से महत्वपूर्ण हो सकता है यदि डेटा एक स्ट्रीमिंग डेटा है, उदाहरण के लिए उपग्रहों या उपकरणों से डेटा।

हाइव, जो आरडीबीएमएस आधारित है, को पहले आयात किए जाने वाले डेटा की आवश्यकता होती है (या लोड) और इसके बाद इसे काम किया जा सकता है। तो यदि आप स्ट्रीमिंग डेटा पर हाइव का उपयोग कर रहे थे, तो आपको नए आने वाले डेटा को संग्रहीत करने के लिए अन्य बाल्टी का उपयोग करते समय बाल्टी (या फाइलें) भरना होगा और प्रत्येक भरे बाल्टी पर हाइव का उपयोग करना होगा।

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

रीग डेटा आयात में तेज़ है लेकिन एचडी जैसे आरडीबीएमएस अनुकूल भाषा की तुलना में वास्तविक निष्पादन में धीमा है।

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


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

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

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


पीआईजी में क्या संभव नहीं है?

विभाजन को HIVE का उपयोग करके किया जा सकता है लेकिन पीआईजी में नहीं, यह आउटपुट को छोड़ने का एक तरीका है।

क्या पीआईजी कर सकता है जो HIVE में संभव नहीं है?

पोजिशनल रेफरेंसिंग - यहां तक ​​कि जब आपके पास फील्ड नाम नहीं होते हैं, तब भी हम $ 0 की तरह स्थिति का उपयोग कर सकते हैं - पहले फ़ील्ड के लिए, दूसरे के लिए $ 1 और इसी तरह।

और एक और मौलिक अंतर यह है कि, पीआईजी को मूल्य लिखने के लिए स्कीमा की आवश्यकता नहीं है लेकिन HIVE को स्कीमा की आवश्यकता है।

आप जेडीबीसी और दूसरों का उपयोग करके किसी भी बाहरी एप्लिकेशन से HIVE तक कनेक्ट कर सकते हैं लेकिन पीआईजी के साथ नहीं।

नोट: दोनों एचडीएफएस (हडूप वितरित फाइल सिस्टम) के शीर्ष पर चलता है और कथन को मानचित्र कम करने के कार्यक्रमों में परिवर्तित कर दिया जाता है।







apache-pig