हाइव क्वेरीज़: ऑर्डर बाय, ग्रुप बाय, डिस्ट्रिब्यूट बाइ, क्लस्टर बाय एग्ज़ाम्पल्स

विषय - सूची:

Anonim

Hive, Hadoop फ़ाइल सिस्टम के शीर्ष पर ETL उद्देश्य के लिए SQL टाइप क्वेरी भाषा प्रदान करता है।

Hive Query भाषा (HiveQL) हाइव में SQL प्रकार का वातावरण टेबल, डेटाबेस, प्रश्नों के साथ काम करने के लिए प्रदान करती है।

हमारे पास विभिन्न प्रकार के डेटा जोड़तोड़ और क्वेरी करने के लिए हाइव से जुड़े एक अलग प्रकार के क्लॉज़ हो सकते हैं। पर्यावरण के बाहर विभिन्न नोड्स के साथ बेहतर कनेक्टिविटी के लिए। HIVE JDBC कनेक्टिविटी भी प्रदान करता है।

हाइव क्वेरीज़ निम्न सुविधाएँ प्रदान करती हैं:

  • डेटा मॉडलिंग जैसे डेटाबेस, टेबल आदि का निर्माण।
  • ETL फ़ंक्शंस जैसे एक्सट्रैक्शन, ट्रांसफ़ॉर्मेशन और टेबल में डेटा लोड करना
  • विभिन्न डेटा तालिकाओं को मर्ज करने के लिए जुड़ता है
  • कोड की आसानी के लिए उपयोगकर्ता विशिष्ट कस्टम स्क्रिप्ट
  • Hadoop के शीर्ष पर तेज़ क्वेरी उपकरण

इस लेख में, आप जानेंगे-

  • प्रश्न द्वारा आदेश
  • क्वेरी द्वारा समूह
  • इसके अनुसार क्रमबद्ध करें
  • द्वारा क्लस्टर
  • द्वारा वितरित करें

छत्ता में तालिका बनाना

इस ट्यूटोरियल के लिए हमारे मुख्य विषय के साथ पहल करने से पहले, हम इसे निम्नलिखित ट्यूटोरियल के संदर्भ के रूप में उपयोग करने के लिए एक टेबल बनाएंगे।

इस ट्यूटोरियल में, हम 6 कॉलम के साथ टेबल "कर्मचारी_गुरु" बनाने जा रहे हैं।

उपरोक्त स्क्रीन शॉट से,

  1. हम 6 कॉलम मानों जैसे आईडी, नाम, आयु, पता, वेतन, विभाग के साथ तालिका "कर्मचारी_गुरु" बना रहे हैं, जो संगठन "गुरु" में मौजूद कर्मचारियों से संबंधित है।
  2. यहां इस चरण में हम कर्मचारी_गुरु तालिका में डेटा लोड कर रहे हैं। हम जो डेटा लोड करने जा रहे हैं, उसे Employees.txt फ़ाइल के अंतर्गत रखा जाएगा

क्वेरी द्वारा आदेश:

HiveQL में सिंटैक्स BY वाक्यविन्यास SQL ​​भाषा में ORDER BY के सिंटैक्स के समान है।

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

यदि फ़ील्ड द्वारा उल्लिखित आदेश एक स्ट्रिंग है, तो यह परिणाम को शाब्दिक क्रम में प्रदर्शित करेगा। पीछे के अंत में, इसे एक एकल reducer पर पारित किया जाना है।

उपरोक्त स्क्रीन शॉट से, हम निम्नलिखित देख सकते हैं

  1. यह क्वेरी है जो स्तंभ के नाम से परिभाषित आदेश के रूप में विभाग के साथ आदेश द्वारा आदेश के साथ "कर्मचारी_गुरु" तालिका पर प्रदर्शन कर रहा है।

    "विभाग" स्ट्रिंग है इसलिए यह शाब्दिक आदेश के आधार पर परिणाम प्रदर्शित करेगा।

  2. यह क्वेरी के लिए वास्तविक आउटपुट है। यदि हम इसे ठीक से देखते हैं, तो हम यह देख सकते हैं कि विभाग के कॉलम जैसे ADMIN, वित्त और प्रदर्शन के आधार पर प्रदर्शित होने वाले परिणाम प्राप्त हो सकते हैं।

प्रश्न:

SELECT * FROM employees_guru ORDER BY Department;

क्वेरी द्वारा समूह:

समूह द्वारा समूह के साथ उल्लिखित विशेष स्तंभ मानों को समूहीकृत करने के लिए समूह हाइव तालिकाओं पर कॉलम का उपयोग करते हैं। जो कुछ भी स्तंभ नाम हम "समूह" को परिभाषित कर रहे हैं, उसके लिए क्वेरी विशेष कॉलम मानों को समूहीकृत करके परिणामों का चयन और प्रदर्शन करेगी।

उदाहरण के लिए, नीचे स्क्रीन शॉट में यह प्रत्येक विभाग में मौजूद कर्मचारियों की कुल संख्या प्रदर्शित करने वाला है। यहां हमारे पास मूल्य के रूप में समूह के रूप में "विभाग" है।

उपरोक्त स्क्रीनशॉट से, हम निम्नलिखित निरीक्षण करेंगे

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

प्रश्न:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

इसके अनुसार क्रमबद्ध करें:

क्लॉज द्वारा सॉर्ट आउटपुट को सॉर्ट करने के लिए हाइव टेबल के कॉलम नामों पर करता है। हम ऑर्डर को अवरोही क्रम में छाँटने के लिए DESC का उल्लेख कर सकते हैं और ASC को क्रम के बढ़ते क्रम के लिए उल्लेख कर सकते हैं।

इस तरह से यह reducer को खिलाने से पहले पंक्तियों को सॉर्ट करेगा। हमेशा सॉर्ट करना कॉलम के प्रकारों पर निर्भर करता है।

उदाहरण के लिए, यदि स्तंभ प्रकार संख्यात्मक हैं, तो यह संख्यात्मक क्रम में सॉर्ट करेगा यदि स्तंभ प्रकार स्ट्रिंग हैं तो यह लेक्सिकोग्राफ़िक क्रम में सॉर्ट करेगा।

उपरोक्त स्क्रीन शॉट से हम निम्नलिखित देख सकते हैं:

  1. यह क्वेरी है जो स्तंभ "नाम" के साथ SORT BY क्लॉज के साथ "कर्मचारी_गुरु" टेबल पर प्रदर्शन कर रहा है, जैसा कि कॉलम नाम के साथ SORT को परिभाषित करता है। हमने कीवर्ड DESC का उपयोग किया।
  2. तो प्रदर्शित आउटपुट "आईडी" के अवरोही क्रम में होगा।

प्रश्न:

SELECT * from employees_guru SORT BY Id DESC;

क्लस्टर द्वारा:

क्लस्टर द्वारा डिवर्ट बाय और सॉर्ट बाय क्लाज दोनों के लिए एक विकल्प के रूप में हाइव-क्यूएल में उपयोग किया जाता है।

Hive में मौजूद तालिकाओं पर क्लस्टर क्लस्टर द्वारा उपयोग किया जाता है। Hive Reducers के बीच पंक्तियों को वितरित करने के लिए क्लस्टर में कॉलम का उपयोग करता है। क्लस्टर बाय कॉलम कई रिड्यूसर में जाएगा।

  • यह कई reducers में मौजूद मानों के क्रम को क्रमबद्ध करना सुनिश्चित करता है

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

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

उपरोक्त स्क्रीन शॉट से हमें निम्नलिखित अवलोकन मिल रहे हैं:

  1. यह वह क्वेरी है जो Id फ़ील्ड मान पर CLICKER BY क्लॉज़ का प्रदर्शन करती है। यहाँ यह Id मानों पर एक प्रकार प्राप्त करने जा रहा है।
  2. यह प्रदर्शित ईद और नाम गुरु द्वारा निर्देशित कर्मचारियों के रूप में प्रस्तुत करता है

प्रश्न:

SELECT Id, Name from employees_guru CLUSTER BY Id;

द्वारा वितरित:

हाइव में मौजूद तालिकाओं पर इस्तेमाल किए जाने वाले खंड द्वारा वितरित करें। हाइव रीड्यूसर के बीच पंक्तियों को वितरित करने के लिए वितरित में कॉलम का उपयोग करता है। सभी डिस्ट्रिब्यूट बाय कॉलम उसी रिड्यूसर में जाएंगे।

  • यह सुनिश्चित करता है कि प्रत्येक एन रिड्यूसर कॉलम की गैर-अतिव्यापी सीमाएं प्राप्त करता है
  • यह प्रत्येक reducer के उत्पादन को सॉर्ट नहीं करता है

उपरोक्त स्क्रीनशॉट से, हम निम्नलिखित देख सकते हैं

  1. "Empoloyees_guru" तालिका की आईडी पर प्रदर्शन करके खंड द्वारा प्रदर्शन
  2. आउटपुट आईडी, नाम दिखा रहा है। वापस अंत में, यह उसी reducer पर जाएगा

प्रश्न:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;