इम्पाला - त्वरित गाइड

इम्पाला क्या है?

इम्पाला एक MPP (मैसिव पैरेलल प्रोसेसिंग) SQL क्वेरी इंजन है जो भारी मात्रा में डेटा को संसाधित करने के लिए है जो Hadoop क्लस्टर में संग्रहीत है। यह एक ओपन सोर्स सॉफ्टवेयर है जो C ++ और Java में लिखा जाता है। यह Hadoop के लिए अन्य SQL इंजनों की तुलना में उच्च प्रदर्शन और कम विलंबता प्रदान करता है।

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

इम्पाला क्यों?

इम्पाला HDFS, HBase, Metastore, YARN, और संतरी जैसे मानक घटकों का उपयोग करके Apache Hadoop के स्केलेबिलिटी और लचीलेपन के साथ एक पारंपरिक विश्लेषणात्मक डेटाबेस के SQL समर्थन और बहु-उपयोगकर्ता प्रदर्शन को जोड़ती है।

  • इम्पाला के साथ, उपयोगकर्ता हाइव जैसे अन्य एसक्यूएल इंजनों की तुलना में एसक्यूएल प्रश्नों का उपयोग करके एचडीएफएस या एचबीएस के साथ संचार कर सकते हैं।

  • इम्पाला Hadoop द्वारा उपयोग किए जाने वाले लगभग सभी फ़ाइल स्वरूपों जैसे Parquet, Avro, RCFile को पढ़ सकता है।

इम्पाला समान मेटाडेटा, SQL सिंटैक्स (Hive SQL), ODBC ड्राइवर और उपयोगकर्ता इंटरफ़ेस (Hue Beeswax) का उपयोग Apache Hive के रूप में करता है, जो बैच-ओरिएंटेड या रीयल-टाइम क्वेरी के लिए एक परिचित और एकीकृत प्लेटफ़ॉर्म प्रदान करता है।

अपाचे हाइव के विपरीत, Impala is not based on MapReduce algorithms। यह एक वितरित वास्तुकला को लागू करता हैdaemon processes क्वेरी निष्पादन के सभी पहलुओं के लिए ज़िम्मेदार हैं जो एक ही मशीनों पर चलते हैं।

इस प्रकार, यह MapReduce के उपयोग की विलंबता को कम करता है और यह अपाचे हाइव की तुलना में इम्पाला को तेज बनाता है।

इम्पाला के फायदे

यहाँ Cloudera Impala के कुछ प्रसिद्ध लाभों की एक सूची दी गई है।

  • इम्पाला का उपयोग करके, आप डेटा को पारंपरिक SQL ज्ञान के साथ HDFS में बिजली की तेज गति से संग्रहीत कर सकते हैं।

  • चूंकि डेटा प्रोसेसिंग किया जाता है, जहां इम्पाला के साथ काम करने के दौरान हडोप पर संग्रहीत डेटा के लिए डेटा निवास (Hadoop क्लस्टर पर), डेटा परिवर्तन और डेटा आंदोलन की आवश्यकता नहीं है।

  • इम्पाला का उपयोग करते हुए, आप जावा (मैप्रेड्यूस नौकरियों) के ज्ञान के बिना एचडीएफएस, एचबीएज़ और अमेज़ॅन एस 3 में संग्रहीत डेटा तक पहुंच सकते हैं। आप एसक्यूएल प्रश्नों के एक मूल विचार के साथ उन्हें एक्सेस कर सकते हैं।

  • व्यावसायिक उपकरणों में क्वेरी लिखने के लिए, डेटा को एक जटिल अर्क-ट्रांसफॉर्म-लोड (ETL) चक्र से गुजरना पड़ता है। लेकिन, इम्पाला के साथ, इस प्रक्रिया को छोटा किया जाता है। लोडिंग और पुनर्गठन के समय लेने वाले चरणों को नई तकनीकों जैसे कि से दूर किया जाता हैexploratory data analysis & data discovery प्रक्रिया तेज कर रहा है।

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

इम्पाला की विशेषताएं

नीचे दिए गए क्लाउडेरा इम्पाला की विशेषताएं हैं -

  • इम्पा अपाचे लाइसेंस के तहत खुले स्रोत के रूप में स्वतंत्र रूप से उपलब्ध है।

  • इम्पा इन-मेमोरी डेटा प्रोसेसिंग का समर्थन करता है, अर्थात, यह डेटा को एक्सेस / विश्लेषण करता है जो डेटा आंदोलन के बिना Hadoop डेटा नोड पर संग्रहीत होता है।

  • आप SQL जैसे प्रश्नों का उपयोग करके इम्पाला का उपयोग करके डेटा तक पहुँच सकते हैं।

  • अन्य SQL इंजन की तुलना में इम्पाला एचडीएफएस में डेटा के लिए तेजी से पहुंच प्रदान करता है।

  • इम्पाला का उपयोग करके, आप HDFS, Apache HBase, और Amazon s3 जैसे स्टोरेज सिस्टम में डेटा स्टोर कर सकते हैं।

  • आप इम्पाला को बिजनेस इंटेलिजेंस टूल जैसे कि झांकी, पेंटाहो, माइक्रो रणनीति और ज़ूम डेटा के साथ एकीकृत कर सकते हैं।

  • इम्पाला विभिन्न फ़ाइल स्वरूपों जैसे LZO, सीक्वेंस फ़ाइल, एवरो, RCFile और Parquet का समर्थन करता है।

  • इम्पाला अपाचे हाइव से मेटाडेटा, ओडीबीसी ड्राइवर और एसक्यूएल सिंटैक्स का उपयोग करता है।

संबंधपरक डेटाबेस और इम्पाला

इम्पाला एक क्वेरी भाषा का उपयोग करता है जो SQL और HiveQL के समान है। निम्न तालिका SQL और इम्पाला क्वेरी भाषा के बीच के कुछ महत्वपूर्ण परिवर्तनों का वर्णन करती है।

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

हाइव, हबेस और इम्पाला

हालाँकि Cloudera Impala एक ही क्वेरी भाषा, मेटास्टोर और हाइव के रूप में यूजर इंटरफेस का उपयोग करता है, लेकिन यह कुछ पहलुओं में हाइव और HBase के साथ भिन्न होता है। निम्न तालिका HBase, हाइव और इम्पाला के बीच तुलनात्मक विश्लेषण प्रस्तुत करती है।

HBase मधुमुखी का छत्ता इम्पाला
HBase Apache Hadoop पर आधारित वाइड-कॉलम स्टोर डेटाबेस है। यह BigTable की अवधारणाओं का उपयोग करता है। हाइव एक डाटा वेयरहाउस सॉफ्टवेयर है। इसका उपयोग करके, हम Hadoop पर निर्मित बड़े वितरित डेटासेट तक पहुँच और प्रबंधन कर सकते हैं। इम्पाला, Hadoop पर संग्रहीत डेटा का प्रबंधन, विश्लेषण करने के लिए एक उपकरण है।
HBase का डेटा मॉडल विस्तृत स्तंभ स्टोर है। हाइव रिलेशनल मॉडल का अनुसरण करता है। इम्पाला रिलेशनल मॉडल का अनुसरण करता है।
HBase को जावा भाषा का उपयोग करके विकसित किया गया है। हाइव जावा भाषा का उपयोग करके विकसित किया गया है। इम्पाला C ++ का उपयोग करके विकसित किया गया है।
HBase का डेटा मॉडल स्कीमा-रहित है। हाइव का डेटा मॉडल स्कीमा-आधारित है। इम्पाला का डेटा मॉडल स्कीमा-आधारित है।
HBase Java, RESTful और, Thrift API की सुविधा प्रदान करता है। Hive JDBC, ODBC, Thrift API की सुविधा प्रदान करता है। इम्पाला JDBC और ODBC API प्रदान करता है।
C, C #, C ++, Groovy, Java PHP, Python और Scala जैसी प्रोग्रामिंग भाषाओं का समर्थन करता है। C ++, Java, PHP और Python जैसी प्रोग्रामिंग भाषाओं का समर्थन करता है। इम्पाला JDBC / ODBC का समर्थन करने वाली सभी भाषाओं का समर्थन करता है।
HBase ट्रिगर्स के लिए सहायता प्रदान करता है। हाइव ट्रिगर्स के लिए कोई समर्थन प्रदान नहीं करता है। इम्पाला ट्रिगर्स के लिए कोई सहायता प्रदान नहीं करता है।

ये सभी तीन डेटाबेस -

  • NOSQL डेटाबेस हैं।

  • खुले स्रोत के रूप में उपलब्ध है।

  • सर्वर-साइड स्क्रिप्टिंग का समर्थन करें।

  • ड्यूरेबिलिटी और कंज्यूरिटी जैसे एसीआईडी ​​गुणों का पालन करें।

  • उपयोग sharding के लिये partitioning

इम्पाला की कमियां

इम्पाला के उपयोग की कुछ कमियां इस प्रकार हैं -

  • इम्पाला Serialization और Deserialization के लिए कोई सहायता प्रदान नहीं करता है।
  • इम्पाला केवल पाठ फाइलें पढ़ सकता है, न कि कस्टम बाइनरी फाइलें।
  • जब भी एचडीएफएस में डेटा निर्देशिका में नए रिकॉर्ड / फाइलें जोड़ी जाती हैं, तो तालिका को ताज़ा करने की आवश्यकता होती है।

यह अध्याय इम्पाला को स्थापित करने, कैसे डाउनलोड, स्थापित और स्थापित करने के लिए आवश्यक शर्तें बताता है Impala आपके सिस्टम में

Hadoop और इसके पारिस्थितिकी तंत्र सॉफ्टवेयर के समान, हमें लिनक्स ऑपरेटिंग सिस्टम पर इम्पाला स्थापित करने की आवश्यकता है। चूंकि बादल ने इम्पाला को भेज दिया, इसलिए यह उपलब्ध हैCloudera Quick Start VM.

यह अध्याय बताता है कि कैसे डाउनलोड करना है Cloudera Quick Start VM और इम्पाला शुरू करें।

डाउनलोडिंग क्लूडर क्विक स्टार्ट वीएम

के नवीनतम संस्करण को डाउनलोड करने के लिए नीचे दिए गए चरणों का पालन करें Cloudera QuickStartVM

चरण 1

क्लाउडडेरा वेबसाइट का होमपेज खोलें http://www.cloudera.com/। आपको नीचे दिखाया गया पेज मिलेगा।

चरण 2

दबाएं Sign in क्लाउडर मुखपृष्ठ पर लिंक, जो आपको नीचे दिखाए गए अनुसार साइन इन पेज पर पुनः निर्देशित करेगा।

यदि आपने अभी तक पंजीकरण नहीं किया है, तो क्लिक करें Register Now लिंक जो आपको देगा Account Registrationप्रपत्र। वहां रजिस्टर करें और क्लाउडडे खाते में साइन इन करें।

चरण 3

साइन इन करने के बाद, क्लाउडर वेबसाइट के डाउनलोड पेज पर क्लिक करें Downloads लिंक निम्नलिखित स्नैपशॉट में हाइलाइट किया गया है।

चरण 4 - डाउनलोड QuickStartVM

बादलों को डाउनलोड करें QuickStartVM पर क्लिक करके Download Now बटन, जैसा कि निम्नलिखित स्नैपशॉट में दिखाया गया है

यह आपको डाउनलोड पृष्ठ पर पुनः निर्देशित करेगा QuickStart VM

दबाएं Get ONE NOW बटन, लाइसेंस समझौते को स्वीकार करें, और नीचे दिखाए अनुसार सबमिट बटन पर क्लिक करें।

क्लाउडरा अपने वीएम संगत वीएमवेयर, केवीएम और वीआईआरटीयूएलओएक्स प्रदान करता है। आवश्यक संस्करण का चयन करें। यहाँ हमारे ट्यूटोरियल में, हम प्रदर्शन कर रहे हैंCloudera QuickStartVM वर्चुअल बॉक्स का उपयोग करके सेटअप, इसलिए क्लिक करें VIRTUALBOX DOWNLOAD बटन, जैसा कि नीचे दिए गए स्नैपशॉट में दिखाया गया है।

इससे नाम की फाइल डाउनलोड होने लगेगी cloudera-quickstart-vm-5.5.0-0-virtualbox.ovf जो एक वर्चुअल बॉक्स इमेज फाइल है।

Cloudera QuickStartVM आयात करना

डाउनलोड करने के बाद cloudera-quickstart-vm-5.5.0-0-virtualbox.ovfफ़ाइल, हमें वर्चुअल बॉक्स का उपयोग करके इसे आयात करना होगा। उसके लिए, सबसे पहले, आपको अपने सिस्टम में वर्चुअल बॉक्स इंस्टॉल करना होगा। डाउनलोड की गई छवि फ़ाइल को आयात करने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1

नीचे दिए गए लिंक से वर्चुअल बॉक्स डाउनलोड करें और इसे इंस्टॉल करें https://www.virtualbox.org/

चरण 2

वर्चुअल बॉक्स सॉफ्टवेयर खोलें। क्लिकFile और चुनें Import Appliance, जैसा की नीचे दिखाया गया।

चरण 3

क्लिक करने पर Import Appliance, आपको आयात वर्चुअल उपकरण विंडो मिलेगी। डाउनलोड की गई छवि फ़ाइल का स्थान चुनें जैसा कि नीचे दिखाया गया है।

आयात करने के बाद Cloudera QuickStartVMछवि, आभासी मशीन शुरू। इस वर्चुअल मशीन में Hadoop, clouddera Impala, और सभी आवश्यक सॉफ़्टवेयर इंस्टॉल किए गए हैं। VM का स्नैपशॉट नीचे दिखाया गया है।

इम्पाला शेल शुरू करना

इम्पाला शुरू करने के लिए, टर्मिनल खोलें और निम्नलिखित कमांड निष्पादित करें।

[cloudera@quickstart ~] $ impala-shell

यह निम्न संदेश प्रदर्शित करते हुए, इम्पाला शेल शुरू करेगा।

Starting Impala Shell without Kerberos authentication 
Connected to quickstart.cloudera:21000 
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build
0c891d79aa38f297d244855a32f1e17280e2129b) 
********************************************************************************
 Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved. 
(Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)
 
Press TAB twice to see a list of available commands. 
******************************************************************************** 
[quickstart.cloudera:21000] >

Note - हम बाद के अध्यायों में सभी आवेग-शेल कमांडों पर चर्चा करेंगे।

इम्पाला क्वेरी संपादक

के अतिरिक्त Impala shell, आप ह्यू ब्राउज़र का उपयोग करके इम्पाला के साथ संवाद कर सकते हैं। CDH5 स्थापित करने और इम्पाला शुरू करने के बाद, यदि आप अपना ब्राउज़र खोलते हैं, तो आपको नीचे दिखाए गए अनुसार क्लाउड होमपेज मिलेगा।

अब, बुकमार्क पर क्लिक करें Hueह्यू ब्राउज़र खोलने के लिए। क्लिक करने पर, आप ह्यू ब्राउजर का लॉगिन पेज देख सकते हैं, क्रेडेंशियल्स क्लाउडडेरा और क्लाउडडेरा के साथ लॉग इन कर सकते हैं।

जैसे ही आप Hue ब्राउज़र पर लॉग ऑन करते हैं, आप नीचे दिखाए गए अनुसार Hue ब्राउज़र का क्विक स्टार्ट विजार्ड देख सकते हैं।

क्लिक करने पर Query Editors ड्रॉप-डाउन मेनू में, आपको संपादकों की सूची मिल जाएगी, जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।

क्लिक करने पर Impala ड्रॉप-डाउन मेनू में, आपको इम्पाला क्वेरी संपादक मिलेगा जैसा कि नीचे दिखाया गया है।

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

इम्पाला डेमन ( इम्पलाद )

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

जब भी किसी विशेष नोड पर एक इम्प्लैड को क्वेरी सबमिट की जाती है, तो वह नोड "के रूप में कार्य करता है"coordinator node"उस क्वेरी के लिए। इम्प्लैड द्वारा अन्य नोड्स पर भी कई प्रश्न पूछे जाते हैं । क्वेरी को स्वीकार करने के बाद, इम्पालाड डेटा फ़ाइलों को पढ़ता है और लिखता है और इम्पाला क्लस्टर में अन्य इम्पाला नोड्स को काम वितरित करके प्रश्नों को समानांतर करता है। जब प्रश्न विभिन्न इम्पालाड उदाहरणों पर प्रसंस्करण कर रहे हैं , तो वे सभी केंद्रीय समन्वय नोड में परिणाम लौटाते हैं।

आवश्यकता के आधार पर, प्रश्नों को एक समर्पित इम्पलाद को या आपके क्लस्टर में किसी अन्य इम्पलाड को संतुलित तरीके से लोड किया जा सकता है ।

इम्पाला स्टेट स्टोर

इम्पाला का एक और महत्वपूर्ण घटक है, जिसे इम्पाला स्टेट स्टोर कहा जाता है, जो प्रत्येक इम्पैलाड के स्वास्थ्य की जाँच करने और उसके बाद प्रत्येक इम्पाला डेमन स्वास्थ्य को अन्य डेमॉन को बार-बार रिले करने के लिए जिम्मेदार है । यह उसी नोड पर चल सकता है जहां इम्पाला सर्वर या क्लस्टर के भीतर अन्य नोड चल रहा है।

इम्पाला स्टेट स्टोर डेमन प्रक्रिया का नाम स्टेट स्टोर किया गया हैImpalad इम्पाला राज्य दुकान डेमॉन, यानी करने के लिए अपने स्वास्थ्य की स्थिति की रिपोर्ट है, राज्य संग्रहीत

किसी भी कारण से नोड फेल होने की स्थिति में, स्टेटस्टोर इस विफलता के बारे में अन्य सभी नोड्स को अपडेट करता है और एक बार ऐसी सूचना अन्य इंपलाड के लिए उपलब्ध होती है , कोई अन्य इम्पाला डेमन प्रभावित नोड को कोई और प्रश्न नहीं देता है।

इम्पाला मेटाडाटा और मेटा स्टोर

इम्पाला मेटाडेटा और मेटा स्टोर एक अन्य महत्वपूर्ण घटक है। इम्पाला टेबल परिभाषाओं को संग्रहीत करने के लिए पारंपरिक MySQL या PostgreSQL डेटाबेस का उपयोग करता है। तालिका और स्तंभ जानकारी और तालिका परिभाषा जैसे महत्वपूर्ण विवरण एक केंद्रीकृत डेटाबेस में मेटा स्टोर के रूप में जाना जाता है।

प्रत्येक इम्पाला नोड स्थानीय रूप से मेटाडेटा के सभी कैश करता है। बहुत बड़ी मात्रा में डेटा और / या कई विभाजनों से निपटने के दौरान, टेबल विशिष्ट मेटाडेटा प्राप्त करने में एक महत्वपूर्ण समय लग सकता है। तो, एक स्थानीय रूप से संग्रहीत मेटाडेटा कैश ऐसी जानकारी तुरंत प्रदान करने में मदद करता है।

जब एक तालिका परिभाषा या टेबल डेटा अपडेट किया जाता है, तो अन्य इम्पाला डेमन्स को प्रश्न में तालिका के खिलाफ एक नई क्वेरी जारी करने से पहले नवीनतम मेटाडेटा को पुनर्प्राप्त करके अपने मेटाडेटा कैश को अपडेट करना होगा।

क्वेरी प्रोसेसिंग इंटरफेस

प्रश्नों को संसाधित करने के लिए, इम्पाला नीचे सूचीबद्ध के रूप में तीन इंटरफेस प्रदान करता है।

  • Impala-shell - क्लोदेरा वीएम का उपयोग करके इम्पाला स्थापित करने के बाद, आप कमांड टाइप करके इम्पाला शेल शुरू कर सकते हैं impala-shellसंपादक में। हम आने वाले अध्यायों में इम्पाला शेल के बारे में अधिक चर्चा करेंगे।

  • Hue interface- आप ह्यू ब्राउज़र का उपयोग करके इम्पाला प्रश्नों को संसाधित कर सकते हैं। ह्यू ब्राउज़र में, आपके पास इम्पाला क्वेरी एडिटर है जहाँ आप इम्पाला क्वेरीज़ टाइप और निष्पादित कर सकते हैं। इस संपादक तक पहुंचने के लिए, सबसे पहले, आपको ह्यू ब्राउज़र में लॉग इन करना होगा।

  • ODBC/JDBC drivers- अन्य डेटाबेस की तरह, इम्पाला ODBC / JDBC ड्राइवर प्रदान करता है। इन ड्राइवरों का उपयोग करके, आप इनका उपयोग कर प्रोग्रामिंग भाषाओं के माध्यम से इम्पाला से जुड़ सकते हैं और उन प्रोग्रामिंग भाषाओं का उपयोग करके इम्पाला में प्रश्नों को संसाधित करने वाले अनुप्रयोगों का निर्माण कर सकते हैं।

क्वेरी निष्पादन प्रक्रिया

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

क्वेरी प्राप्त करने के बाद, क्वेरी समन्वयक सत्यापित करता है कि क्वेरी का उपयोग करना उचित है या नहीं Table Schemaहाइव मेटा स्टोर से। बाद में, यह HDFS नाम नोड से क्वेरी को निष्पादित करने के लिए आवश्यक डेटा के स्थान के बारे में जानकारी एकत्र करता है और क्वेरी को निष्पादित करने के लिए यह जानकारी अन्य impalads को भेजता है।

अन्य सभी इम्पाला डेमॉन निर्दिष्ट डेटा ब्लॉक को पढ़ते हैं और क्वेरी को संसाधित करते हैं। जैसे ही सभी डेमन अपने कार्यों को पूरा करते हैं, क्वेरी समन्वयक परिणाम को वापस इकट्ठा करता है और उपयोगकर्ता को वितरित करता है।

पहले के अध्यायों में, हमने क्लाउड और इसकी वास्तुकला का उपयोग करके इम्पाला की स्थापना देखी है।

  • इम्पाला शेल (कमांड प्रॉम्प्ट)
  • ह्यू (यूजर इंटरफेस)
  • ODBC और JDBC (तृतीय पक्ष पुस्तकालय)

यह अध्याय बताता है कि इम्पाला शेल और शेल के विभिन्न विकल्पों को कैसे शुरू किया जाए।

इम्पाला शेल कमांड संदर्भ

इम्पाला शेल के आदेशों को वर्गीकृत किया गया है general commands, query specific options, तथा table and database specific options, जैसा कि नीचे बताया गया है।

जनरल कमांड्स

  • help
  • version
  • history
  • खोल (या)!
  • connect
  • बाहर निकलना | छोड़ना

क्वेरी विशिष्ट विकल्प

  • Set/unset
  • Profile
  • Explain

तालिका और डेटाबेस विशिष्ट विकल्प

  • Alter
  • describe
  • drop
  • insert
  • select
  • show
  • use

इम्पाला शेल शुरू करना

क्लाउडडेरा टर्मिनल खोलें, सुपरसुअर के रूप में साइन इन करें, और टाइप करें cloudera पासवर्ड के रूप में नीचे दिखाया गया है।

[cloudera@quickstart ~]$ su
Password: cloudera
[root@quickstart cloudera]#

निम्नलिखित कमांड टाइप करके इम्पाला शेल शुरू करें -

[root@quickstart cloudera] # impala-shell 
Starting Impala Shell without Kerberos authentication 
Connected to quickstart.cloudera:21000 
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE 
(build 0c891d79aa38f297d244855a32f1e17280e2129b)
********************************************************************* 

Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved.
(Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)

Want to know what version of Impala you're connected to? Run the VERSION command to 
find out! 
********************************************************************* 
[quickstart.cloudera:21000] >

इम्पाला - सामान्य प्रयोजन कमांड

इम्पाला के सामान्य उद्देश्य आदेश नीचे दिए गए हैं -

हेल्प कमांड

help इम्पाला शेल की कमान आपको इम्पाला में उपलब्ध आदेशों की एक सूची प्रदान करती है -

[quickstart.cloudera:21000] > help;
 
Documented commands (type help <topic>):
========================================================
compute  describe  insert  set     unset  with  version
connect  explain   quit    show    values use
exit     history   profile select  shell  tip 
  
Undocumented commands:
========================================= 
alter create desc drop help load summary

संस्करण कमांड

version कमांड आपको इम्पाला का वर्तमान संस्करण देता है, जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > version;
Shell version: Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 
12:18:12 PST 2015

Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 
0c891d79aa38f297d244855a32f1e17280e2129b)

इतिहास की आज्ञा

historyइम्पाला की कमान शेल में निष्पादित अंतिम 10 आदेशों को प्रदर्शित करती है। निम्नलिखित का उदाहरण हैhistoryआदेश। यहां हमने 5 कमांड निष्पादित किए हैं, अर्थात्, संस्करण, सहायता, शो, उपयोग और इतिहास।

[quickstart.cloudera:21000] > history;
[1]:version;
[2]:help;
[3]:show databases;
[4]:use my_db;
[5]:history;

पद छोड़ना / बाहर निकलना

आप इम्पाला शेल से बाहर आ सकते हैं quit या exit कमांड, जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > exit; 
Goodbye cloudera

कनेक्ट कमांड

connectइम्पाला के दिए गए उदाहरण से कनेक्ट करने के लिए कमांड का उपयोग किया जाता है। यदि आप किसी भी उदाहरण को निर्दिष्ट नहीं करते हैं, तो यह डिफ़ॉल्ट पोर्ट से जुड़ता है21000 जैसा की नीचे दिखाया गया।

[quickstart.cloudera:21000] > connect; 
Connected to quickstart.cloudera:21000 
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 
0c891d79aa38f297d244855a32f1e17280e2129b)

इम्पाला क्वेरी विशिष्ट विकल्प

इम्पाला के क्वेरी विशिष्ट आदेश एक क्वेरी को स्वीकार करते हैं। उन्हें नीचे समझाया गया है -

समझाना

explain कमांड दिए गए क्वेरी के लिए निष्पादन योजना देता है।

[quickstart.cloudera:21000] > explain select * from sample;
Query: explain select * from sample
+------------------------------------------------------------------------------------+ 
| Explain String                                                                     | 
+------------------------------------------------------------------------------------+ 
| Estimated Per-Host Requirements: Memory = 48.00MB VCores = 1                       | 
| WARNING: The following tables are missing relevant table and/or column statistics. |
| my_db.customers                                                                    | 
| 01:EXCHANGE [UNPARTITIONED]                                                        | 
| 00:SCAN HDFS [my_db.customers]                                                     | 
| partitions = 1/1 files = 6 size = 148B                                             | 
+------------------------------------------------------------------------------------+ 
Fetched 7 row(s) in 0.17s

प्रोफ़ाइल

profileकमांड हालिया क्वेरी के बारे में निम्न-स्तरीय जानकारी प्रदर्शित करता है। इस कमांड का उपयोग किसी क्वेरी के निदान और प्रदर्शन ट्यूनिंग के लिए किया जाता है। निम्नलिखित एक का उदाहरण हैprofileआदेश। इस परिदृश्य में,profile आदेश निम्न-स्तरीय जानकारी देता है explain क्वेरी।

[quickstart.cloudera:21000] > profile;

Query Runtime Profile: 
Query (id=164b1294a1049189:a67598a6699e3ab6): 

   Summary: 
      Session ID: e74927207cd752b5:65ca61e630ad3ad
      Session Type: BEESWAX 
      Start Time: 2016-04-17 23:49:26.08148000 End Time: 2016-04-17 23:49:26.2404000 
      Query Type: EXPLAIN 
      Query State: FINISHED 
      Query Status: OK 
      Impala Version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 0c891d77280e2129b) 
      User: cloudera 
      Connected User: cloudera 
      Delegated User: 
      Network Address:10.0.2.15:43870 
      Default Db: my_db 
      Sql Statement: explain select * from sample 
      Coordinator: quickstart.cloudera:22000 
      : 0ns 
      Query Timeline: 167.304ms 
         - Start execution: 41.292us (41.292us) - Planning finished: 56.42ms (56.386ms) 
         - Rows available: 58.247ms (1.819ms) 
         - First row fetched: 160.72ms (101.824ms) 
         - Unregister query: 166.325ms (6.253ms)
         
   ImpalaServer: 
      - ClientFetchWaitTimer: 107.969ms 
      - RowMaterializationTimer: 0ns

तालिका और डेटाबेस विशिष्ट विकल्प

निम्न तालिका में सूची और डेटा विशिष्ट विकल्पों को इम्पाला में सूचीबद्ध किया गया है।

अनु क्रमांक कमान और स्पष्टीकरण
1

Alter

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

2

Describe

describeइम्पाला की कमान एक मेज का मेटाडेटा देता है। इसमें कॉलम और उनके डेटा प्रकार जैसी जानकारी होती है। describe आज्ञा है desc शॉर्ट कट के रूप में।

3

Drop

drop इम्पाला से एक निर्माण को हटाने के लिए कमांड का उपयोग किया जाता है, जहां एक निर्माण एक तालिका, एक दृश्य, या एक डेटाबेस फ़ंक्शन हो सकता है।

4

insert

insert इम्पाला की कमान का उपयोग किसके लिए किया जाता है?

  • डेटा (कॉलम) को एक तालिका में जोड़ें।
  • किसी मौजूदा तालिका के डेटा को ओवरराइड करें।
  • किसी मौजूदा तालिका के डेटा को ओवरराइड करें।
5

select

selectस्टेटमेंट का उपयोग किसी विशेष डेटासेट पर एक वांछित ऑपरेशन करने के लिए किया जाता है। यह डेटासेट निर्दिष्ट करता है जिस पर कुछ कार्रवाई पूरी करनी है। आप चुन सकते हैं या (एक फाइल में) स्टोर कर सकते हैं चुनिंदा कथन का परिणाम।

6

show

show इम्पाला का कथन तालिकाओं, डेटाबेस और तालिकाओं जैसे विभिन्न निर्माणों के मेटास्टोर को प्रदर्शित करने के लिए उपयोग किया जाता है।

7

use

use इम्पेला के कथन का उपयोग वर्तमान संदर्भ को वांछित डेटाबेस में बदलने के लिए किया जाता है।

इम्पाला डेटा प्रकार

निम्न तालिका इम्पाला डेटा प्रकारों का वर्णन करती है।

अनु क्रमांक डेटा प्रकार और विवरण
1

BIGINT

यह डेटाटाइप संख्यात्मक मानों को संग्रहीत करता है और इस डेटा प्रकार की सीमा -9223372036854775808 से 9223372036854775807 है। इस डेटाटाइप का उपयोग तालिका बनाने और तालिका विवरणों को बदलने में किया जाता है।

2

BOOLEAN

यह डेटा प्रकार केवल स्टोर करता है true या false मान और इसका उपयोग तालिका बनाने के स्तंभ की परिभाषा में किया जाता है।

3

CHAR

यह डेटा प्रकार एक निश्चित लंबाई भंडारण है, यह रिक्त स्थान के साथ गद्देदार है, आप अधिकतम 255 तक स्टोर कर सकते हैं।

4

DECIMAL

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

5

DOUBLE

इस डेटा प्रकार का उपयोग सकारात्मक या नकारात्मक 4.94065645841246544e-324d -1.79769313486231570e + 308 की सीमा में फ्लोटिंग पॉइंट वैल्यू को स्टोर करने के लिए किया जाता है।

6

FLOAT

इस डेटा प्रकार का उपयोग सकारात्मक या नकारात्मक 1.40129846432481707e-45 .. 3.40282346638528860e + 38 की सीमा में एकल परिशुद्धता फ्लोटिंग वैल्यू डेटाैटेस को स्टोर करने के लिए किया जाता है।

7

INT

इस डेटा प्रकार का उपयोग 4-बाइट पूर्णांक को -2147483648 से 2147483647 तक की सीमा तक संग्रहीत करने के लिए किया जाता है।

8

SMALLINT

इस डेटा प्रकार का उपयोग 2-बाइट पूर्णांक को -32768 से 32767 की सीमा तक संग्रहीत करने के लिए किया जाता है।

9

STRING

यह स्ट्रिंग मानों को संग्रहीत करने के लिए उपयोग किया जाता है।

10

TIMESTAMP

यह डेटा प्रकार एक समय में एक बिंदु का प्रतिनिधित्व करने के लिए उपयोग किया जाता है।

1 1

TINYINT

यह डेटा प्रकार -128 -127 से 127 तक की सीमा तक 1-बाइट पूर्णांक मान को संग्रहीत करने के लिए उपयोग किया जाता है।

12

VARCHAR

यह डेटा प्रकार अधिकतम लंबाई 65,535 तक चर लंबाई चरित्र को संग्रहीत करने के लिए उपयोग किया जाता है।

13

ARRAY

यह एक जटिल डेटा प्रकार है और इसका उपयोग आदेशित तत्वों की चर संख्या को संग्रहीत करने के लिए किया जाता है।

14

Map

यह एक जटिल डेटा प्रकार है और इसका उपयोग कुंजी-मूल्य युग्मों के चर संख्या को संग्रहीत करने के लिए किया जाता है।

15

Struct

यह एक जटिल डेटा प्रकार है और इसका उपयोग किसी एक आइटम के कई क्षेत्रों का प्रतिनिधित्व करने के लिए किया जाता है।

इम्पाला में टिप्पणियाँ

इम्पाला में टिप्पणियाँ एसक्यूएल में उन लोगों के समान हैं। सामान्य तौर पर हमारे पास प्रोग्रामिंग भाषाओं में दो प्रकार की टिप्पणियां हैं, जैसे एकल-लाइन टिप्पणियां और बहुस्तरीय टिप्पणियां।

Single-line comments- हर एक पंक्ति जिसके बाद "-" को इम्पाला में एक टिप्पणी के रूप में माना जाता है। निम्नलिखित इम्पाला में एकल-पंक्ति टिप्पणियों का एक उदाहरण है।

-- Hello welcome to tutorials point.

Multiline comments - सभी लाइनों के बीच /* तथा */इम्पाला में बहुभाषी टिप्पणियों के रूप में माना जाता है। निम्नलिखित इम्पाला में एक बहुस्तरीय टिप्पणियों का एक उदाहरण है।

/*
Hi this is an example
Of multiline comments in Impala
*/

इम्पाला के ऑपरेटर एसक्यूएल के समान हैं। निम्नलिखित लिंक पर क्लिक करके हमारे एसक्यूएल ट्यूटोरियल को देखेंएसक्यूएल ऑपरेटरों।

इम्पाला - एक डेटाबेस बनाएँ

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

स्टेटमेंट जारी करें

CREATE DATABASE Statement इम्पाला में एक नया डेटाबेस बनाने के लिए उपयोग किया जाता है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है CREATE DATABASE बयान।

CREATE DATABASE IF NOT EXISTS database_name;

यहाँ, IF NOT EXISTSएक वैकल्पिक क्लाज है। यदि हम इस क्लॉज़ का उपयोग करते हैं, तो दिए गए नाम वाला एक डेटाबेस बनाया जाता है, केवल अगर उसी नाम वाला कोई मौजूदा डेटाबेस नहीं है।

उदाहरण

निम्नलिखित का एक उदाहरण है create database statement। इस उदाहरण में, हमने नाम के साथ एक डेटाबेस बनाया हैmy_database.

[quickstart.cloudera:21000] > CREATE DATABASE IF NOT EXISTS my_database;

उपरोक्त क्वेरी निष्पादित करने पर cloudera impala-shell, आपको निम्न आउटपुट मिलेगा।

Query: create DATABASE my_database 

Fetched 0 row(s) in 0.21s

सत्यापन

SHOW DATABASES क्वेरी इम्पाला में डेटाबेस की सूची देती है, इसलिए आप यह सत्यापित कर सकते हैं कि डेटाबेस का उपयोग करके डेटाबेस बनाया गया है या नहीं SHOWDATABASES का कथन। यहां आप नए बनाए गए डेटाबेस का निरीक्षण कर सकते हैंmy_db सूची मैं।

[quickstart.cloudera:21000] > show databases; 

Query: show databases
+-----------------------------------------------+
| name                                          | 
+-----------------------------------------------+ 
| _impala_builtins                              |
| default                                       | 
|  my_db                                        | 
+-----------------------------------------------+
Fetched 3 row(s) in 0.20s 
[quickstart.cloudera:21000] >

Hdfs Path

एचडीएफएस फाइल सिस्टम में एक डेटाबेस बनाने के लिए, आपको उस स्थान को निर्दिष्ट करने की आवश्यकता है जहां डेटाबेस बनाया जाना है।

CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;

Hue Browser का उपयोग करके डेटाबेस बनाना

इम्पाला क्वेरी संपादक खोलें और टाइप करें CREATE DATABASEइसमें बयान। इसके बाद, निम्न स्क्रीनशॉट में दिखाए गए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी को निष्पादित करने के बाद, धीरे से ड्रॉपडाउन मेनू के शीर्ष पर क्यूरर ले जाएं और आपको एक ताज़ा प्रतीक मिलेगा। यदि आप रिफ्रेश सिंबल पर क्लिक करते हैं, तो डेटाबेस की सूची रिफ्रेश हो जाएगी और उस पर हाल के बदलाव लागू हो जाएंगे।

सत्यापन

दबाएं drop-down box शीर्षक के अंतर्गत DATABASEसंपादक के बाईं ओर। वहां आप सिस्टम में डेटाबेस की एक सूची देख सकते हैं। यहां आप नए बनाए गए डेटाबेस का निरीक्षण कर सकते हैंmy_db जैसा की नीचे दिखाया गया।

यदि आप ध्यान से देखते हैं, तो आप केवल एक डेटाबेस देख सकते हैं, my_db सूची में डिफ़ॉल्ट डेटाबेस के साथ।

DROP DATABASE Statementइम्पाला का प्रयोग इम्पाला के एक डेटाबेस को हटाने के लिए किया जाता है। डेटाबेस को हटाने से पहले, इसमें से सभी तालिकाओं को हटाने की सिफारिश की जाती है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है DROP DATABASE बयान।

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | 
CASCADE] [LOCATION hdfs_path];

यहाँ, IF EXISTSएक वैकल्पिक क्लाज है। यदि हम इस क्लॉज का उपयोग तब करते हैं जब किसी दिए गए नाम वाला डेटाबेस मौजूद होता है, तो उसे हटा दिया जाएगा। और अगर दिए गए नाम के साथ कोई मौजूदा डेटाबेस नहीं है, तो कोई ऑपरेशन नहीं किया जाता है।

उदाहरण

निम्नलिखित का एक उदाहरण है DROP DATABASEबयान। मान लें कि आपके पास नाम के साथ इम्पाला में एक डेटाबेस हैsample_database

और, यदि आप डेटाबेस का उपयोग करते हुए सूची को सत्यापित करते हैं SHOW DATABASES बयान, आप इसमें नाम देखेंगे।

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES
+-----------------------+ 
| name                  | 
+-----------------------+ 
| _impala_builtins      | 
| default               | 
| my_db                 | 
| sample_database       | 
+-----------------------+ 
Fetched 4 row(s) in 0.11s

अब, आप इस डेटाबेस का उपयोग करके हटा सकते हैं DROP DATABASE Statement जैसा की नीचे दिखाया गया।

< DROP DATABASE IF EXISTS sample_database;

यह निर्दिष्ट डेटाबेस को हटा देगा और आपको निम्न आउटपुट देगा।

Query: drop DATABASE IF EXISTS sample_database;

सत्यापन

आप यह सत्यापित कर सकते हैं कि दिए गए डेटाबेस को हटा दिया गया है या नहीं SHOW DATABASESबयान। यहां आप यह देख सकते हैं कि नामित डेटाबेसsample_database डेटाबेस की सूची से हटा दिया गया है।

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES 
+----------------------+ 
| name                 | 
+----------------------+ 
| _impala_builtins     | 
| default              | 
| my_db                | 
+----------------------+ 
Fetched 3 row(s) in 0.10s 
[quickstart.cloudera:21000] >

झरना

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

उदाहरण

मान लीजिए कि इम्पाला नाम का एक डेटाबेस है sample, और इसमें दो तालिकाएँ हैं, अर्थात्, student तथा test। यदि आप इस डेटाबेस को सीधे हटाने की कोशिश करते हैं, तो आपको नीचे दिखाए गए अनुसार एक त्रुटि मिलेगी।

[quickstart.cloudera:21000] > DROP database sample;
Query: drop database sample 
ERROR: 
ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: 
CAUSED BY: InvalidOperationException: Database sample is not empty. One or more 
tables exist.

का उपयोग करते हुए cascade, आप नीचे दिखाए गए अनुसार सीधे इस डेटाबेस को हटा सकते हैं (इसकी सामग्री को मैन्युअल रूप से हटाए बिना)।

[quickstart.cloudera:21000] > DROP database sample cascade; 
Query: drop database sample cascade

Note - आप "नहीं हटा सकते हैं"current database”इम्पाला में। इसलिए, डेटाबेस को हटाने से पहले, आपको यह सुनिश्चित करने की आवश्यकता है कि वर्तमान संदर्भ डेटाबेस के अलावा किसी अन्य पर सेट है जिसे आप हटाने जा रहे हैं।

Hue Browser का उपयोग करके डेटाबेस को हटाना

इम्पाला क्वेरी संपादक खोलें और टाइप करें DELETE DATABASEइसमें स्टेटमेंट और नीचे दिखाए गए बटन पर क्लिक करें। मान लीजिए कि तीन डेटाबेस हैं, अर्थात्,my_db, my_database, तथा sample_databaseडिफ़ॉल्ट डेटाबेस के साथ। यहां हम my_database नाम के डेटाबेस को हटा रहे हैं।

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

सत्यापन

पर क्लिक करें drop down शीर्षक के अंतर्गत DATABASEसंपादक के बाईं ओर। वहां, आप सिस्टम में डेटाबेस की एक सूची देख सकते हैं। यहां आप नए बनाए गए डेटाबेस का निरीक्षण कर सकते हैंmy_db जैसा की नीचे दिखाया गया।

यदि आप ध्यान से देखते हैं, तो आप केवल एक डेटाबेस देख सकते हैं, my_db सूची में डिफ़ॉल्ट डेटाबेस के साथ।

एक बार जब आप इम्पाला से जुड़ जाते हैं, तो उपलब्ध डेटाबेस में से किसी एक का चयन करना आवश्यक होता है। USE DATABASE Statement इम्पाला का उपयोग वर्तमान सत्र को किसी अन्य डेटाबेस पर स्विच करने के लिए किया जाता है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है USE बयान।

USE db_name;

उदाहरण

निम्नलिखित का एक उदाहरण है USE statement। सबसे पहले, हम नाम के साथ एक डेटाबेस बनाते हैंsample_database जैसा की नीचे दिखाया गया।

> CREATE DATABASE IF NOT EXISTS sample_database;

यह एक नया डेटाबेस बनाएगा और आपको निम्न आउटपुट देगा।

Query: create DATABASE IF NOT EXISTS my_db2

Fetched 0 row(s) in 2.73s

यदि आप डेटाबेस की सूची का उपयोग करके सत्यापित करते हैं SHOW DATABASES कथन, आप इसमें नए बनाए गए डेटाबेस का नाम देख सकते हैं।

> SHOW DATABASES;

Query: show DATABASES 
+-----------------------+ 
| name                  | 
+-----------------------+ 
| _impala_builtins      | 
| default               | 
| my_db                 | 
| sample_database       | 
+-----------------------+ 
Fetched 4 row(s) in 0.11s

अब, सत्र को नए बनाए गए डेटाबेस (sample_database) पर प्रयोग करके स्विच करें USE जैसा कि नीचे दिखाया गया है।

> USE sample_database;

यह वर्तमान संदर्भ को नमूना_डेटाबेस में बदल देगा और नीचे दिखाए गए अनुसार एक संदेश प्रदर्शित करेगा।

Query: use sample_database

Hue Browser का उपयोग करके डेटाबेस का चयन करना

के बाईं ओर Query Editor इम्पाला में, आपको एक ड्रॉपडाउन मेनू मिलेगा जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।

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

बस उस डेटाबेस का चयन करें जिसके लिए आपको वर्तमान संदर्भ को बदलने की आवश्यकता है।

CREATE TABLEइम्पाला में आवश्यक डेटाबेस में एक नया टेबल बनाने के लिए स्टेटमेंट का उपयोग किया जाता है। एक मूल तालिका बनाने में तालिका का नामकरण और उसके कॉलम और प्रत्येक स्तंभ के डेटा प्रकार को परिभाषित करना शामिल है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है CREATE TABLEबयान। यहाँ,IF NOT EXISTSएक वैकल्पिक क्लाज है। यदि हम इस क्लॉज का उपयोग करते हैं, तो दिए गए नाम के साथ एक तालिका बनाई जाती है, केवल अगर एक ही नाम के साथ निर्दिष्ट डेटाबेस में कोई मौजूदा तालिका नहीं है।

create table IF NOT EXISTS database_name.table_name (
   column1 data_type,
   column2 data_type,
   column3 data_type,
   ………
   columnN data_type
);

CREATE TABLE वह कीवर्ड है जो डेटाबेस सिस्टम को एक नया टेबल बनाने का निर्देश देता है। तालिका के लिए अद्वितीय नाम या पहचानकर्ता क्रिएट टेबल स्टेटमेंट का अनुसरण करता है। वैकल्पिक रूप से आप निर्दिष्ट कर सकते हैंdatabase_name साथ में table_name

उदाहरण

निम्नलिखित तालिका बनाने का एक उदाहरण है। इस उदाहरण में, हमने एक तालिका बनाई है जिसका नाम हैstudent डेटाबेस में my_db

[quickstart.cloudera:21000] > CREATE TABLE IF NOT EXISTS my_db.student
   (name STRING, age INT, contact INT );

उपरोक्त कथन को निष्पादित करने पर, निर्दिष्ट आउटपुट के साथ, निर्दिष्ट नाम वाली एक तालिका बनाई जाएगी।

Query: create table student (name STRING, age INT, phone INT) 

Fetched 0 row(s) in 0.48s

सत्यापन

show Tablesइम्पाला में वर्तमान डेटाबेस में क्वेरी तालिकाओं की एक सूची देती है। इसलिए, आप यह सत्यापित कर सकते हैं कि क्या तालिका का उपयोग करके बनाया गया हैShow Tables बयान।

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

[quickstart.cloudera:21000] > use my_db; 
Query: use my_db

फिर, यदि आपको तालिकाओं का उपयोग करने की सूची मिलती है show tables क्वेरी, आप नामित तालिका का निरीक्षण कर सकते हैं student इसमें नीचे दिखाया गया है।

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| student   | 
+-----------+ 
Fetched 1 row(s) in 0.10s

HDFS पथ

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

CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;

Hue Browser का उपयोग करके डेटाबेस बनाना

इम्पाला क्वेरी संपादक खोलें और टाइप करें CREATE Tableइसमें कथन। और निचे दिए गए स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

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

सत्यापन

पर क्लिक करें drop down शीर्षक के अंतर्गत DATABASEसंपादक के बाईं ओर। वहां आप डेटाबेस की एक सूची देख सकते हैं। डेटाबेस का चयन करेंmy_db जैसा की नीचे दिखाया गया।

डेटाबेस का चयन करने पर my_dbआप इसमें नीचे दी गई तालिका की सूची देख सकते हैं। यहां आप नई बनाई गई तालिका पा सकते हैंstudent जैसा की नीचे दिखाया गया।

INSERT इम्पाला के कथन के दो खंड हैं - into तथा overwrite। के साथ स्टेटमेंट डालेंinto एक डेटाबेस में मौजूदा तालिका में नए रिकॉर्ड जोड़ने के लिए क्लॉज का उपयोग किया जाता है।

वाक्य - विन्यास

के दो मूल वाक्यविन्यास हैं INSERT कथन इस प्रकार है -

insert into table_name (column1, column2, column3,...columnN)

values (value1, value2, value3,...valueN);

यहाँ, column1, column2, ... columnN उस तालिका के स्तंभ हैं, जिसमें आप डेटा सम्मिलित करना चाहते हैं।

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

Insert into table_name values (value1, value2, value2);

क्रिएट टेबल एक नया टेबल बनाने के लिए डेटाबेस सिस्टम को बताने वाला कीवर्ड है। तालिका के लिए अद्वितीय नाम या पहचानकर्ता क्रिएट टेबल स्टेटमेंट का अनुसरण करता है। वैकल्पिक रूप से आप निर्दिष्ट कर सकते हैंdatabase_name इसके साथ table_name

उदाहरण

मान लीजिए हमने एक टेबल बनाया है जिसका नाम है student जैसा कि नीचे दिखाया गया है।

create table employee (Id INT, name STRING, age INT,address STRING, salary BIGINT);

निम्नलिखित तालिका में रिकॉर्ड बनाने का एक उदाहरण है employee

[quickstart.cloudera:21000] > insert into employee 
(ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );

उपरोक्त कथन को निष्पादित करने पर, एक रिकॉर्ड नाम की तालिका में डाला जाता है employee निम्न संदेश प्रदर्शित करना।

Query: insert into employee (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh',
   32, 'Ahmedabad', 20000 ) 
Inserted 1 row(s) in 1.32s

आप नीचे दिखाए गए अनुसार कॉलम नामों को निर्दिष्ट किए बिना एक और रिकॉर्ड डाल सकते हैं।

[quickstart.cloudera:21000] > insert into employee values (2, 'Khilan', 25, 
   'Delhi', 15000 );

उपरोक्त कथन को निष्पादित करने पर, एक रिकॉर्ड नाम की तालिका में डाला जाता है employee निम्न संदेश प्रदर्शित करना।

Query: insert into employee values (2, 'Khilan', 25, 'Delhi', 15000 ) 
Inserted 1 row(s) in 0.31s

आप कर्मचारी तालिका में कुछ और रिकॉर्ड डाल सकते हैं जैसा कि नीचे दिखाया गया है।

Insert into employee values (3, 'kaushik', 23, 'Kota', 30000 );

Insert into employee values (4, 'Chaitali', 25, 'Mumbai', 35000 );

Insert into employee values (5, 'Hardik', 27, 'Bhopal', 40000 );

Insert into employee values (6, 'Komal', 22, 'MP', 32000 );

मान डालने के बाद, employee इम्पाला में टेबल नीचे दिखाया गया है।

+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary |
+----+----------+-----+-----------+--------+
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 5  | Hardik   | 27  | Bhopal    | 40000  |
| 4  | Chaitali | 25  | Mumbai    | 35000  |
| 3  | kaushik  | 23  | Kota      | 30000  |
| 6  | Komal    | 22  | MP        | 32000  |
+----+----------+-----+-----------+--------+

तालिका में डेटा को ओवरराइट करना

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

Insert overwrite table_name values (value1, value2, value2);

उदाहरण

निम्नलिखित क्लॉज का उपयोग करने का एक उदाहरण है overwrite

[quickstart.cloudera:21000] > Insert overwrite employee values (1, 'Ram', 26, 
   'Vishakhapatnam', 37000 );

उपरोक्त क्वेरी को निष्पादित करने पर, यह निम्न संदेश प्रदर्शित करने वाले निर्दिष्ट रिकॉर्ड के साथ तालिका डेटा को अधिलेखित कर देगा।

Query: insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 ) 
Inserted 1 row(s) in 0.31s

तालिका को सत्यापित करने पर, आप देख सकते हैं कि तालिका के सभी रिकॉर्ड employee नीचे दिखाए गए अनुसार नए रिकॉर्ड द्वारा अधिलेखित किए गए हैं।

+----+------+-----+---------------+--------+
| id | name | age | address       | salary |
+----+------+-----+---------------+--------+
| 1  | Ram  | 26  | Vishakhapatnam| 37000  |
+----+------+-----+---------------+--------+

Hue Browser का उपयोग करके डेटा सम्मिलित करना

इम्पाला क्वेरी संपादक खोलें और टाइप करें insertइसमें कथन। और निचे दिए गए स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी / स्टेटमेंट को निष्पादित करने के बाद, यह रिकॉर्ड तालिका में जोड़ा जाता है।

इम्पाला SELECTएक डेटाबेस में एक या अधिक टेबल से डेटा लाने के लिए स्टेटमेंट का उपयोग किया जाता है। यह क्वेरी तालिका के रूप में डेटा लौटाता है।

वाक्य - विन्यास

निम्नलिखित इम्पाला का वाक्य विन्यास है select बयान।

SELECT column1, column2, columnN from table_name;

यहाँ, column1, column2 ... एक तालिका के क्षेत्र हैं जिनके मान आप लाना चाहते हैं। यदि आप क्षेत्र में उपलब्ध सभी क्षेत्रों को लाना चाहते हैं, तो आप निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं -

SELECT * FROM table_name;

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers इम्पाला में, निम्नलिखित डेटा के साथ -

ID    NAME       AGE    ADDRESS      SALARY
---   -------    ---    ----------   -------
1     Ramesh     32     Ahmedabad    20000
2     Khilan     25     Delhi        15000
3     Hardik     27     Bhopal       40000
4     Chaitali   25     Mumbai       35000
5     kaushik    23     Kota         30000
6     Komal      22     Mp           32000

आप ला सकते हैं id, name, तथा age के सभी रिकॉर्ड customers तालिका का उपयोग कर select जैसा कि नीचे दिखाया गया है -

[quickstart.cloudera:21000] > select id, name, age from customers;

उपरोक्त क्वेरी को निष्पादित करने पर, इम्पाला निर्दिष्ट तालिका से सभी रिकॉर्ड की आईडी, नाम, आयु प्राप्त करता है और उन्हें नीचे दिखाए अनुसार प्रदर्शित करता है।

Query: select id,name,age from customers

+----+----------+-----+
| id | name     | age |
| 1  | Ramesh   | 32  |
| 2  | Khilan   | 25  |
| 3  | Hardik   | 27  |
| 4  | Chaitali | 25  |
| 5  | kaushik  | 23  |
| 6  | Komal    | 22  |
+----+----------+-----+

Fetched 6 row(s) in 0.66s

आप भी ला सकते हैं all से रिकॉर्ड customers तालिका का उपयोग कर select नीचे दिखाए अनुसार।

[quickstart.cloudera:21000] > select name, age from customers; 
Query: select * from customers

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला निर्दिष्ट तालिका से सभी रिकॉर्ड दिखाता है और नीचे दिखाया गया है।

+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary |
+----+----------+-----+-----------+--------+
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 3  | Hardik   | 27  | Bhopal    | 40000  |
| 4  | Chaitali | 25  | Mumbai    | 35000  |
| 5  | kaushik  | 23  | Kota      | 30000  |
| 6  | Komal    | 22  | MP        | 32000  |
+----+----------+-----+-----------+--------+

Fetched 6 row(s) in 0.66s

ह्यू का उपयोग करके रिकॉर्ड प्राप्त करना

इम्पाला क्वेरी संपादक खोलें और टाइप करें selectइसमें कथन। और निचे दिए गए स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी निष्पादित करने के बाद, यदि आप नीचे स्क्रॉल करते हैं और चुनें Results टैब, आप नीचे दिखाए गए अनुसार निर्दिष्ट तालिका के रिकॉर्ड की सूची देख सकते हैं।

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

वाक्य - विन्यास

निम्नलिखित इम्पाला का वाक्य विन्यास है describe बयान।

Describe table_name;

उदाहरण

उदाहरण के लिए, मान लें कि हमारे पास एक तालिका है जिसका नाम है customer इम्पाला में, निम्नलिखित डेटा के साथ -

ID    NAME     AGE    ADDRESS     SALARY
--- --------- ----- ----------- -----------
1   Ramesh     32    Ahmedabad    20000
2   Khilan     25    Delhi        15000
3   Hardik     27    Bhopal       40000
4   Chaitali   25    Mumbai       35000
5   kaushik    23    Kota         30000
6   Komal      22    Mp           32000

आप का वर्णन प्राप्त कर सकते हैं customer तालिका का उपयोग कर describe जैसा कि नीचे दिखाया गया है -

[quickstart.cloudera:21000] > describe customer;

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला प्राप्त करता है metadata निर्दिष्ट तालिका के अनुसार और इसे नीचे दिखाए गए अनुसार प्रदर्शित करता है।

Query: describe customer
 
+---------+--------+---------+ 
| name    | type   | comment | 
+---------+--------+---------+ 
| id      | int    |         |                    
| name    | string |         | 
| age     | int    |         | 
| address | string |         | 
| salary  | bigint |         |
+---------+--------+---------+ 

Fetched 5 row(s) in 0.51s

ह्यू का उपयोग करके अभिलेखों का वर्णन करना

इम्पाला क्वेरी संपादक खोलें और टाइप करें describe इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी निष्पादित करने के बाद, यदि आप नीचे स्क्रॉल करते हैं और चुनें Results टैब, आप तालिका के मेटाडेटा को नीचे दिखाए अनुसार देख सकते हैं।

इम्पाला में ऑल्टर टेबल स्टेटमेंट का उपयोग किसी दिए गए टेबल पर परिवर्तन करने के लिए किया जाता है। इस कथन का उपयोग करके, हम मौजूदा तालिका में कॉलम जोड़ सकते हैं, हटा सकते हैं या संशोधित कर सकते हैं और हम इसका नाम बदल भी सकते हैं।

यह अध्याय वाक्य-विन्यास और उदाहरणों के साथ कई प्रकार के परिवर्तनकारी कथन की व्याख्या करता है। सबसे पहले यह मान लें कि हमारे पास एक टेबल है जिसका नाम हैcustomers में my_db इम्पाला में डेटाबेस, निम्नलिखित डेटा के साथ

ID   NAME     AGE   ADDRESS    SALARY
--- --------- ----- ----------- --------
1   Ramesh    32    Ahmedabad   20000
2   Khilan    25    Delhi       15000
3   Hardik    27    Bhopal      40000
4   Chaitali  25    Mumbai      35000
5   kaushik   23    Kota        30000
6   Komal     22    Mp          32000

और, यदि आपको डेटाबेस में तालिकाओं की सूची मिलती है my_db, आप पा सकते हैं customers तालिका में नीचे दिखाया गया है।

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| student   | 
| student1  | 
+-----------+

तालिका का नाम बदलना

वाक्य - विन्यास

का मूल सिंटैक्स ALTER TABLE एक मौजूदा तालिका का नाम बदलने के लिए इस प्रकार है -

ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name

उदाहरण

निम्नलिखित तालिका का नाम बदलकर उपयोग करने का एक उदाहरण है alterबयान। यहां हम तालिका का नाम बदल रहे हैंcustomers उपयोगकर्ताओं के लिए।

[quickstart.cloudera:21000] > ALTER TABLE my_db.customers RENAME TO my_db.users;

उपरोक्त क्वेरी को निष्पादित करने के बाद, इम्पाला निम्न संदेश को प्रदर्शित करते हुए आवश्यकतानुसार तालिका का नाम बदल देता है।

Query: alter TABLE my_db.customers RENAME TO my_db.users

आप वर्तमान डेटाबेस में तालिकाओं की सूची को सत्यापित कर सकते हैं show tablesबयान। आप नाम की तालिका पा सकते हैंusers के बजाय customers

Query: show tables 
+----------+ 
| name     | 
+----------+ 
| employee | 
| student  | 
| student1 | 
| users    | 
+----------+ 
Fetched 4 row(s) in 0.10s

एक तालिका में कॉलम जोड़ना

वाक्य - विन्यास

का मूल सिंटैक्स ALTER TABLE मौजूदा तालिका में कॉलम जोड़ने के लिए इस प्रकार है -

ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])

उदाहरण

निम्न क्वेरी एक उदाहरण है जिसमें दर्शाया गया है कि किसी मौजूदा तालिका में कॉलम कैसे जोड़ें। यहां हम दो कॉलम जोड़ रहे हैं account_no और phone_number (दोनों bigint डेटा प्रकार के हैं)users तालिका।

[quickstart.cloudera:21000] > ALTER TABLE users ADD COLUMNS (account_no BIGINT, 
phone_no BIGINT);

उपरोक्त क्वेरी को निष्पादित करने पर, यह निर्दिष्ट कॉलम को नाम तालिका में जोड़ देगा student, निम्न संदेश प्रदर्शित कर रहा है।

Query: alter TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT)

यदि आप तालिका के स्कीमा को सत्यापित करते हैं users, आप इसमें नए जोड़े गए कॉलम को नीचे दिखाए अनुसार पा सकते हैं।

quickstart.cloudera:21000] > describe users;
 
Query: describe users 
+------------+--------+---------+ 
| name       | type   | comment | 
+------------+--------+---------+ 
| id         | int    |         | 
| name       | string |         | 
| age        | int    |         |
| address    | string |         | 
| salary     | bigint |         | 
| account_no | bigint |         | 
| phone_no   | bigint |         | 
+------------+--------+---------+ 
Fetched 7 row(s) in 0.20s

एक मेज से स्तंभों को गिरा देना

वाक्य - विन्यास

के लिए बुनियादी तालिका के बुनियादी वाक्यविन्यास DROP COLUMN एक मौजूदा तालिका में निम्नानुसार है -

ALTER TABLE name DROP [COLUMN] column_name

उदाहरण

निम्न क्वेरी मौजूदा तालिका से कॉलम हटाने का एक उदाहरण है। यहां हम नाम के कॉलम को हटा रहे हैंaccount_no

[quickstart.cloudera:21000] > ALTER TABLE users DROP account_no;

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला निम्नलिखित संदेश को प्रदर्शित करने के लिए account_no नाम के कॉलम को हटा देता है।

Query: alter TABLE users DROP account_no

यदि आप तालिका के स्कीमा को सत्यापित करते हैं users, आपको नाम का कॉलम नहीं मिल रहा है account_no चूंकि इसे हटा दिया गया था।

[quickstart.cloudera:21000] > describe users; 

Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

एक कॉलम का नाम और प्रकार बदलना

वाक्य - विन्यास

के लिए बुनियादी तालिका के बुनियादी वाक्यविन्यास change the name and datatype मौजूदा तालिका में एक कॉलम निम्नानुसार है -

ALTER TABLE name CHANGE column_name new_name new_type

उदाहरण

निम्न कथन का उपयोग करके स्तंभ के नाम और डेटाटाइप को बदलने का एक उदाहरण है। यहां हम कॉलम का नाम बदल रहे हैंphone_no to email और इसका डेटा प्रकार string

[quickstart.cloudera:21000] > ALTER TABLE users CHANGE phone_no e_mail string;

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला निर्दिष्ट परिवर्तन करता है, जो निम्न संदेश प्रदर्शित करता है।

Query: alter TABLE users CHANGE phone_no e_mail string

आप का उपयोग करके तालिका उपयोगकर्ताओं के मेटाडेटा को सत्यापित कर सकते हैं describeबयान। आप देख सकते हैं कि इम्पाला ने निर्दिष्ट कॉलम में आवश्यक परिवर्तन किए हैं।

[quickstart.cloudera:21000] > describe users; 
Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

ह्यू का उपयोग करके एक तालिका को बदलना

इम्पाला क्वेरी संपादक खोलें और टाइप करें alter इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

उपरोक्त क्वेरी को निष्पादित करने पर, यह तालिका का नाम बदल देगा customers सेवा users। उसी तरह, हम सभी को निष्पादित कर सकते हैंalter प्रश्नों।

इम्पाला drop tableइम्पाला में मौजूदा टेबल को हटाने के लिए स्टेटमेंट का उपयोग किया जाता है। यह कथन आंतरिक तालिकाओं के लिए अंतर्निहित HDFS फ़ाइलों को भी हटा देता है

NOTE - इस कमांड का उपयोग करते समय आपको सावधान रहना होगा क्योंकि एक बार टेबल डिलीट हो जाने के बाद, टेबल में उपलब्ध सभी जानकारी भी हमेशा के लिए खो जाएगी।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है DROP TABLEबयान। यहाँ,IF EXISTSएक वैकल्पिक क्लाज है। यदि हम इस क्लॉज़ का उपयोग करते हैं, तो दिए गए नाम वाली एक तालिका हटा दी जाती है, केवल तब ही जब वह मौजूद हो। अन्यथा, कोई ऑपरेशन नहीं किया जाएगा।

DROP table database_name.table_name;

यदि आप IF EXISTS क्लॉज के बिना मौजूद तालिका को हटाने का प्रयास करते हैं, तो एक त्रुटि उत्पन्न होगी। वैकल्पिक रूप से आप निर्दिष्ट कर सकते हैंdatabase_name साथ में टीable_name

उदाहरण

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

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+------------+ 
| name       | 
+------------+ 
| customers  | 
| employee   | 
| student    | 
+------------+ 
Fetched 3 row(s) in 0.11s

उपरोक्त परिणाम से, आप उस डेटाबेस का निरीक्षण कर सकते हैं my_db जिसमें 3 टेबल हैं

निम्नलिखित का एक उदाहरण है drop table statement। इस उदाहरण में, हम नाम की तालिका को हटा रहे हैंstudent डेटाबेस से my_db

[quickstart.cloudera:21000] > drop table if exists my_db.student;

उपरोक्त क्वेरी निष्पादित करने पर, निर्दिष्ट आउटपुट के साथ निर्दिष्ट नाम वाली एक तालिका हटा दी जाएगी।

Query: drop table if exists student

सत्यापन

show Tablesइम्पाला में वर्तमान डेटाबेस में क्वेरी तालिकाओं की एक सूची देती है। इसलिए, आप सत्यापित कर सकते हैं कि क्या तालिका का उपयोग करके हटा दिया गया हैShow Tables बयान।

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

[quickstart.cloudera:21000] > use my_db; 
Query: use my_db

फिर, यदि आपको तालिकाओं का उपयोग करने की सूची मिलती है show tables क्वेरी, आप नामित तालिका का निरीक्षण कर सकते हैं student सूची में नहीं है।

[quickstart.cloudera:21000] > show tables; 

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| student   | 
+-----------+ 
Fetched 3 row(s) in 0.11s

Hue Browser का उपयोग करके डेटाबेस बनाना

इम्पाला क्वेरी संपादक खोलें और टाइप करें drop Tableइसमें कथन। और निचे दिए गए स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

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

सत्यापन

पर क्लिक करें drop down शीर्षक के अंतर्गत DATABASEसंपादक के बाईं ओर। वहाँ आप डेटाबेस की एक सूची देख सकते हैं; डेटाबेस का चयन करेंmy_db जैसा की नीचे दिखाया गया।

डेटाबेस का चयन करने पर my_db, आप नीचे दिखाए गए अनुसार तालिकाओं की एक सूची देख सकते हैं। यहां आपको हटाए गए तालिका नहीं मिल सकते हैंstudent सूची में नीचे दिखाया गया है।

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

आप एक संपूर्ण तालिका को हटाने के लिए DROP TABLE कमांड का उपयोग भी कर सकते हैं, लेकिन यह डेटाबेस से संपूर्ण तालिका संरचना को हटा देगा और यदि आप चाहें तो कुछ डेटा संग्रहीत करने के लिए आपको इस तालिका को एक बार फिर से बनाना होगा।

वाक्य - विन्यास

ट्रंकट टेबल स्टेटमेंट का सिंटैक्स निम्नलिखित है।

truncate table_name;

उदाहरण

मान लीजिए, हमारे पास एक तालिका है जिसका नाम है customersइम्पाला में, और यदि आप इसकी सामग्री को सत्यापित करते हैं, तो आपको निम्नलिखित परिणाम मिल रहे हैं। इसका मतलब है कि ग्राहकों की तालिका में 6 रिकॉर्ड हैं।

[quickstart.cloudera:21000] > select * from customers; 

Query: select * from customers 
+----+----------+-----+-----------+--------+--------+ 
| id | name     | age | address   | salary | e_mail | 
+----+----------+-----+-----------+--------+--------+
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | NULL   | 
| 2  | Khilan   | 25  | Delhi     | 15000  | NULL   | 
| 3  | kaushik  | 23  | Kota      | 30000  | NULL   |
| 4  | Chaitali | 25  | Mumbai    | 35000  | NULL   | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | NULL   | 
| 6  | Komal    | 22  | MP        | 32000  | NULL   | 
+----+----------+-----+-----------+--------+--------+

निम्नलिखित इम्पाला में एक टेबल को काटकर उपयोग करने का एक उदाहरण है truncate statement। यहां हम नाम की तालिका के सभी रिकॉर्ड निकाल रहे हैंcustomers

[quickstart.cloudera:21000] > truncate customers;

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

Query: truncate customers 

Fetched 0 row(s) in 0.37s

सत्यापन

यदि आप हटाए गए ऑपरेशन के बाद, उपयोग करते हुए, ग्राहक तालिका की सामग्री को सत्यापित करते हैं select विवरण, आपको एक खाली पंक्ति मिलेगी जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers 

Fetched 0 row(s) in 0.12s

Hue Browser का उपयोग करके एक टेबल को छोटा करना

इम्पाला क्वेरी संपादक खोलें और टाइप करें truncateइसमें कथन। और निचे दिए गए स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी / स्टेटमेंट को निष्पादित करने के बाद, तालिका से सभी रिकॉर्ड हटा दिए जाते हैं।

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

उदाहरण

निम्नलिखित का एक उदाहरण है show tablesबयान। यदि आप किसी विशेष डेटाबेस में तालिकाओं की सूची प्राप्त करना चाहते हैं, तो सबसे पहले, संदर्भ को आवश्यक डेटाबेस में बदलें और उपयोग करते हुए तालिकाओं की सूची प्राप्त करेंshow tables जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > use my_db; 
Query: use my_db
[quickstart.cloudera:21000] > show tables;

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

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
+-----------+ 
Fetched 2 row(s) in 0.10s

ह्यू का उपयोग करके टेबल्स की सूची बनाना

इम्पाला क्वेरी संपादक खोलें, इस संदर्भ को चुनें my_db और टाइप करें show tables इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी निष्पादित करने के बाद, यदि आप नीचे स्क्रॉल करते हैं और चुनें Results टैब, आप नीचे दी गई तालिका की सूची देख सकते हैं।

एक दृश्य इम्पाला क्वेरी भाषा के एक बयान से ज्यादा कुछ नहीं है जो डेटाबेस में एक संबद्ध नाम के साथ संग्रहीत है। यह एक पूर्वनिर्धारित SQL क्वेरी के रूप में एक तालिका की एक रचना है।

एक दृश्य में तालिका या चयनित लोगों की सभी पंक्तियाँ हो सकती हैं। एक या कई तालिकाओं से एक दृश्य बनाया जा सकता है। दृश्य उपयोगकर्ताओं को इसकी अनुमति देते हैं -

  • एक तरह से संरचना डेटा, जो उपयोगकर्ताओं या उपयोगकर्ताओं के वर्ग को स्वाभाविक या सहज लगता है।

  • डेटा तक पहुंच को प्रतिबंधित करें जैसे कि एक उपयोगकर्ता देख सकता है और (कभी-कभी) ठीक उसी तरह से संशोधित करता है जिसकी उन्हें आवश्यकता है और अधिक नहीं।

  • विभिन्न तालिकाओं से डेटा संक्षेप करें जो रिपोर्ट उत्पन्न करने के लिए उपयोग किया जा सकता है।

आप का उपयोग करके एक दृश्य बना सकते हैं Create View इम्पाला का बयान।

वाक्य - विन्यास

निम्नलिखित व्यू स्टेटमेंट का सिंटैक्स है। IF NOT EXISTSएक वैकल्पिक क्लाज है। यदि हम इस क्लॉज का उपयोग करते हैं, तो दिए गए नाम के साथ एक तालिका बनाई जाती है, केवल अगर एक ही नाम के साथ निर्दिष्ट डेटाबेस में कोई मौजूदा तालिका नहीं है।

Create View IF NOT EXISTS view_name as Select statement

उदाहरण

उदाहरण के लिए, मान लें कि हमारे पास एक तालिका है जिसका नाम है customers में my_db इम्पाला में डेटाबेस, निम्नलिखित डेटा के साथ।

ID  NAME      AGE   ADDRESS     SALARY
--- --------- ----- ----------- --------
1   Ramesh    32    Ahmedabad   20000
2   Khilan    25    Delhi       15000
3   Hardik    27    Bhopal      40000
4   Chaitali  25    Mumbai      35000
5   kaushik   23    Kota        30000
6   Komal     22    MP          32000

निम्नलिखित का एक उदाहरण है Create View Statement। इस उदाहरण में, हम एक दृश्य बना रहे हैंcustomers तालिका जिसमें कॉलम, नाम और उम्र शामिल है।

[quickstart.cloudera:21000] > CREATE VIEW IF NOT EXISTS customers_view AS 
select name, age from customers;

उपरोक्त क्वेरी को निष्पादित करने पर, वांछित कॉलम के साथ एक दृश्य बनाया जाता है, जो निम्न संदेश प्रदर्शित करता है।

Query: create VIEW IF NOT EXISTS sample AS select * from customers 
Fetched 0 row(s) in 0.33s

सत्यापन

आप केवल उपयोग किए गए दृश्य की सामग्री को सत्यापित कर सकते हैं select जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > select * from customers_view;

यह निम्नलिखित परिणाम का उत्पादन करेगा।

Query: select * from customers_view 
+----------+-----+ 
| name     | age | 
+----------+-----+ 
| Komal    | 22  | 
| Khilan   | 25  | 
| Ramesh   | 32  | 
| Hardik   | 27  | 
| Chaitali | 25  | 
| kaushik  | 23  | 
+----------+-----+ 
Fetched 6 row(s) in 4.80s

ह्यू का उपयोग करके एक दृश्य बनाना

इम्पाला क्वेरी संपादक खोलें, इस संदर्भ को चुनें my_db, और टाइप करें Create View इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी निष्पादित करने के बाद, यदि आप नीचे स्क्रॉल करते हैं, तो आप देख सकते हैं view नामित sample नीचे दिखाए गए अनुसार तालिकाओं की सूची में बनाया गया।

Alter Viewइम्पाला के कथन का उपयोग किसी दृश्य को बदलने के लिए किया जाता है। इस कथन का उपयोग करके, आप एक दृश्य का नाम बदल सकते हैं, डेटाबेस बदल सकते हैं, और इससे जुड़ी क्वेरी कर सकते हैं।

से एक view एक तार्किक निर्माण है, कोई भी भौतिक डेटा इससे प्रभावित नहीं होगा alter view क्वेरी।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है Alter View बयान

ALTER VIEW database_name.view_name as Select statement

उदाहरण

उदाहरण के लिए, मान लें कि हमारे पास नाम का एक दृश्य है customers_view में my_db निम्नलिखित सामग्री के साथ इम्पाला में डेटाबेस।

+----------+-----+ 
| name     | age | 
+----------+-----+ 
| Komal    | 22  | 
| Khilan   | 25  | 
| Ramesh   | 32  | 
| Hardik   | 27  | 
| Chaitali | 25  | 
| kaushik  | 23  | 
+----------+-----+

निम्नलिखित का एक उदाहरण है Alter View Statement। इस उदाहरण में, हम नाम और उम्र के बजाय कॉलम आईडी, नाम और वेतन शामिल हैंcustomers_view

[quickstart.cloudera:21000] > Alter view customers_view as select id, name, 
salary from customers;

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला निर्दिष्ट परिवर्तनों को करता है customers_view, निम्न संदेश प्रदर्शित कर रहा है।

Query: alter view customers_view as select id, name, salary from customers

सत्यापन

आप की सामग्री को सत्यापित कर सकते हैं view नामित customers_view, का उपयोग करते हुए select जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > select * from customers_view;
Query: select * from customers_view

यह निम्नलिखित परिणाम का उत्पादन करेगा।

+----+----------+--------+ 
| id | name     | salary | 
+----+----------+--------+
| 3  | kaushik  | 30000  | 
| 2  | Khilan   | 15000  | 
| 5  | Hardik   | 40000  | 
| 6  | Komal    | 32000  | 
| 1  | Ramesh   | 20000  | 
| 4  | Chaitali | 35000  | 
+----+----------+--------+ 
Fetched 6 row(s) in 0.69s

ह्यू का उपयोग करके एक दृश्य को बदलना

इम्पाला क्वेरी संपादक खोलें, इस संदर्भ को चुनें my_db, और टाइप करें Alter View इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी निष्पादित करने के बाद, view नामित sample तदनुसार बदल दिया जाएगा।

Drop Viewमौजूदा दृश्य को हटाने के लिए इम्पाला की क्वेरी का उपयोग किया जाता है। से एकview एक तार्किक निर्माण है, कोई भी भौतिक डेटा इससे प्रभावित नहीं होगा drop view क्वेरी।

वाक्य - विन्यास

निम्नलिखित ड्रॉप व्यू स्टेटमेंट का सिंटैक्स है।

DROP VIEW database_name.view_name;

उदाहरण

उदाहरण के लिए, मान लें कि हमारे पास नाम का एक दृश्य है customers_view में my_db निम्नलिखित सामग्री के साथ इम्पाला में डेटाबेस।

+----------+-----+ 
| name     | age | 
+----------+-----+ 
| Komal    | 22  | 
| Khilan   | 25  | 
| Ramesh   | 32  | 
| Hardik   | 27  | 
| Chaitali | 25  | 
| kaushik  | 23  | 
+----------+-----+

निम्नलिखित का एक उदाहरण है Drop View Statement। इस उदाहरण में, हम हटाने की कोशिश कर रहे हैंview नामित customers_view का उपयोग करते हुए drop view क्वेरी।

[quickstart.cloudera:21000] > Drop view customers_view;

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला निर्दिष्ट संदेश को हटाता है, निम्न संदेश प्रदर्शित करता है।

Query: drop view customers_view

सत्यापन

यदि आप उपयोग करने वाली तालिकाओं की सूची सत्यापित करते हैं show tables कथन, आप देख सकते हैं कि view नामित customers_view हटा दिया गया है।

[quickstart.cloudera:21000] > show tables;

यह निम्नलिखित परिणाम का उत्पादन करेगा।

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| sample    | 
+-----------+ 
Fetched 3 row(s) in 0.10s

ह्यू का उपयोग कर एक दृश्य को गिराना

इम्पाला क्वेरी संपादक खोलें, इस संदर्भ को चुनें my_db, और टाइप करें Drop view इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

क्वेरी निष्पादित करने के बाद, यदि आप नीचे स्क्रॉल करते हैं, तो आप नाम की एक सूची देख सकते हैं TABLES। इस सूची में सभी शामिल हैंtables तथा viewsवर्तमान डेटाबेस में। इस सूची से, आप पा सकते हैं कि निर्दिष्टview हटाया गया था।

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

वाक्य - विन्यास

इसके बाद ORDER BY क्लॉज का वाक्य विन्यास है।

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

आप कीवर्ड का उपयोग करके तालिका में डेटा को आरोही या अवरोही क्रम में व्यवस्थित कर सकते हैं ASC या DESC क्रमशः।

उसी तरह, यदि हम NULLS FIRST का उपयोग करते हैं, तो तालिका में सभी अशक्त मूल्य शीर्ष पंक्तियों में व्यवस्थित होते हैं; और यदि हम NULLS LAST का उपयोग करते हैं, तो अंतिम मान वाली पंक्तियों को व्यवस्थित किया जाएगा।

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 1  | Ramesh   |  32 | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.51s

निम्नलिखित डेटा में व्यवस्था करने का एक उदाहरण है customers तालिका, उनके बढ़ते क्रम में id’s का उपयोग करते हुए order by खंड।

[quickstart.cloudera:21000] > Select * from customers ORDER BY id asc;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट का उत्पादन करती है।

Query: select * from customers ORDER BY id asc 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.56s

उसी तरह, आप के डेटा को व्यवस्थित कर सकते हैं customers अवरोही क्रम में तालिका का उपयोग करते हुए order by नीचे दिखाए अनुसार

[quickstart.cloudera:21000] > Select * from customers ORDER BY id desc;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट का उत्पादन करती है।

Query: select * from customers ORDER BY id desc 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 6  | Komal    | 22  | MP        | 32000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.54s

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

वाक्य - विन्यास

निम्नलिखित समूह BY खंड का सिंटैक्स है।

select data from table_name Group BY col_name;

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.51s

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

[quickstart.cloudera:21000] > Select name, sum(salary) from customers Group BY name;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट देती है।

Query: select name, sum(salary) from customers Group BY name 
+----------+-------------+ 
| name     | sum(salary) | 
+----------+-------------+ 
| Ramesh   | 20000       | 
| Komal    | 32000       | 
| Hardik   | 40000       | 
| Khilan   | 15000       | 
| Chaitali | 35000       | 
| kaushik  | 30000       |
+----------+-------------+ 
Fetched 6 row(s) in 1.75s

मान लें कि इस तालिका में कई रिकॉर्ड हैं जैसा कि नीचे दिखाया गया है।

+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Ramesh   | 32  | Ahmedabad | 1000|  | 
| 3  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | kaushik  | 23  | Kota      | 30000  | 
| 5  | Chaitali | 25  | Mumbai    | 35000  |
| 6  | Chaitali | 25  | Mumbai    | 2000   |
| 7  | Hardik   | 27  | Bhopal    | 40000  | 
| 8  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+

अब फिर से, आप रिकॉर्ड्स की बार-बार प्रविष्टियों पर विचार करते हुए, कर्मचारियों की सैलरी की कुल राशि प्राप्त कर सकते हैं Group By नीचे दिखाए अनुसार

Select name, sum(salary) from customers Group BY name;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट देती है।

Query: select name, sum(salary) from customers Group BY name 
+----------+-------------+ 
| name     | sum(salary) | 
+----------+-------------+ 
| Ramesh   | 21000       | 
| Komal    | 32000       | 
| Hardik   | 40000       | 
| Khilan   | 15000       | 
| Chaitali | 37000       | 
| kaushik  | 30000       | 
+----------+-------------+
Fetched 6 row(s) in 1.75s

Having इम्पाला में क्लॉज़ आपको उन स्थितियों को निर्दिष्ट करने में सक्षम करता है जो अंतिम परिणामों में समूह परिणामों को फ़िल्टर करती हैं।

सामान्य तौर पर, Having क्लॉज के साथ प्रयोग किया जाता है group byखंड; यह ग्रुप BY क्लॉज द्वारा बनाए गए समूहों पर स्थितियां रखता है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है Havingखंड।

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-------------+--------+ 
| id | name     | age | address     | salary | 
+----+----------+-----+-------------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad   | 20000  |
| 2  | Khilan   | 25  | Delhi       | 15000  | 
| 3  | kaushik  | 23  | Kota        | 30000  | 
| 4  | Chaitali | 25  | Mumbai      | 35000  | 
| 5  | Hardik   | 27  | Bhopal      | 40000  | 
| 6  | Komal    | 22  | MP          | 32000  | 
| 7  | ram      | 25  | chennai     | 23000  | 
| 8  | rahim    | 22  | vizag       | 31000  | 
| 9  | robert   | 23  | banglore    | 28000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

निम्नलिखित उपयोग करने का एक उदाहरण है Having इम्पाला में खंड -

[quickstart.cloudera:21000] > select max(salary) from customers group by age having max(salary) > 20000;

यह क्वेरी शुरू में उम्र के अनुसार तालिका को समूहित करती है और प्रत्येक समूह के अधिकतम वेतन का चयन करती है और उन वेतन को प्रदर्शित करती है, जो नीचे दिखाए गए 20000 से अधिक हैं।

20000 
+-------------+ 
| max(salary) |
+-------------+ 
| 30000       |
| 35000       | 
| 40000       | 
| 32000       | 
+-------------+ 
Fetched 4 row(s) in 1.30s

limit इम्पाला में क्लॉज का उपयोग किसी परिणाम की पंक्तियों की संख्या को एक वांछित संख्या तक सीमित करने के लिए किया जाता है, यानी, क्वेरी का परिणाम निर्दिष्ट सीमा से परे रिकॉर्ड नहीं रखता है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है Limit इम्पाला में खंड।

select * from table_name order by id limit numerical_expression;

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 9  | robert   | 23  | banglore  | 28000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

आप तालिका में अभिलेखों को उनकी आईडी के उपयोग के आरोही क्रम में व्यवस्थित कर सकते हैं order by नीचे दिखाए अनुसार

[quickstart.cloudera:21000] > select * from customers order by id; 
Query: select * from customers order by id 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 8  | ram      | 22  | vizag     | 31000  |
| 9  | robert   | 23  | banglore  | 28000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.54s

अब, का उपयोग कर limit क्लॉज, आप आउटपुट के रिकॉर्ड की संख्या को 4 तक सीमित कर सकते हैं, का उपयोग करके limit नीचे दिखाए अनुसार

[quickstart.cloudera:21000] > select * from customers order by id limit 4;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट देती है।

Query: select * from customers order by id limit 4 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.64s

सामान्य तौर पर, एक के परिणाम में पंक्तियाँ select क्वेरी का उपयोग 0. से शुरू होता है offsetखंड, हम यह तय कर सकते हैं कि आउटपुट कहाँ से माना जाना चाहिए। उदाहरण के लिए, यदि हम ऑफसेट को 0 के रूप में चुनते हैं, तो परिणाम हमेशा की तरह होगा और यदि हम ऑफसेट को 5 के रूप में चुनते हैं, तो परिणाम पांचवें पंक्ति से शुरू होता है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है offsetइम्पाला में खंड।

select data from table_name Group BY col_name;

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 9  | robert   | 23  | banglore  | 28000  |
| 7  | ram      | 25  | chennai   | 23000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

आप तालिका में अभिलेखों को उनकी आईडी के आरोही क्रम में व्यवस्थित कर सकते हैं और उपयोग करते हुए रिकॉर्ड की संख्या 4 तक सीमित कर सकते हैं limit तथा order by नीचे दिखाए अनुसार।

Query: select * from customers order by id limit 4 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.64s

निम्नलिखित का एक उदाहरण है offsetखंड। यहाँ, हम में रिकॉर्ड प्राप्त कर रहे हैंcustomersउनकी आईडी के क्रम में तालिका और 0 वें पंक्ति से शुरू होने वाली पहली चार पंक्तियों को मुद्रित करना ।

[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 0;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न परिणाम देती है।

Query: select * from customers order by id limit 4 offset 0 
+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.62s

उसी तरह, आप चार रिकॉर्ड प्राप्त कर सकते हैं customers तालिका 5 से ऑफसेट पंक्ति से शुरू होती है जैसा कि नीचे दिखाया गया है।

[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 5; 
Query: select * from customers order by id limit 4 offset 5 
+----+--------+-----+----------+--------+ 
| id | name   | age | address  | salary | 
+----+--------+-----+----------+--------+ 
| 6  | Komal  | 22  | MP       | 32000  | 
| 7  | ram    | 25  | chennai  | 23000  | 
| 8  | ram    | 22  | vizag    | 31000  |
| 9  | robert | 23  | banglore | 28000  | 
+----+--------+-----+----------+--------+ 
Fetched 4 row(s) in 0.52s

आप का उपयोग करके दो प्रश्नों के परिणामों को जोड़ सकते हैं Union इम्पाला का खंड।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है Union इम्पाला में खंड।

query1 union query2;

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 9  | robert   | 23  | banglore  | 28000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.59s

उसी तरह, मान लीजिए कि हमारे पास एक और टेबल है, जिसका नाम है employee और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from employee; 
Query: select * from employee 
+----+---------+-----+---------+--------+ 
| id | name    | age | address | salary | 
+----+---------+-----+---------+--------+ 
| 3  | mahesh  | 54  | Chennai | 55000  | 
| 2  | ramesh  | 44  | Chennai | 50000  | 
| 4  | Rupesh  | 64  | Delhi   | 60000  | 
| 1  | subhash | 34  | Delhi   | 40000  | 
+----+---------+-----+---------+--------+ 
Fetched 4 row(s) in 0.59s

निम्नलिखित का एक उदाहरण है unionइम्पाला में खंड। इस उदाहरण में, हम दोनों आईडी के क्रम में दोनों तालिकाओं में रिकॉर्ड की व्यवस्था करते हैं और दो अलग-अलग प्रश्नों का उपयोग करके उनकी संख्या को 3 तक सीमित करते हैं और इन प्रश्नों का उपयोग करके शामिल होते हैंUNION खंड।

[quickstart.cloudera:21000] > select * from customers order by id limit 3
 union select * from employee order by id limit 3;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट देती है।

Query: select * from customers order by id limit 3 union select 
   * from employee order by id limit 3 
+----+---------+-----+-----------+--------+ 
| id | name    | age | address   | salary | 
+----+---------+-----+-----------+--------+ 
| 2  | Khilan  | 25  | Delhi     | 15000  |
| 3  | mahesh  | 54  | Chennai   | 55000  | 
| 1  | subhash | 34  | Delhi     | 40000  | 
| 2  | ramesh  | 44  | Chennai   | 50000  | 
| 3  | kaushik | 23  | Kota      | 30000  | 
| 1  | Ramesh  | 32  | Ahmedabad | 20000  | 
+----+---------+-----+-----------+--------+ 
Fetched 6 row(s) in 3.11s

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

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है with इम्पाला में खंड।

with x as (select 1), y as (select 2) (select * from x union y);

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers डेटाबेस में my_db और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 9  | robert   | 23  | banglore  | 28000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.59s

उसी तरह, मान लीजिए कि हमारे पास एक और टेबल है, जिसका नाम है employee और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select * from employee; 
Query: select * from employee 
+----+---------+-----+---------+--------+ 
| id | name    | age | address | salary | 
+----+---------+-----+---------+--------+ 
| 3  | mahesh  | 54  | Chennai | 55000  | 
| 2  | ramesh  | 44  | Chennai | 50000  | 
| 4  | Rupesh  | 64  | Delhi   | 60000  | 
| 1  | subhash | 34  | Delhi   | 40000  | 
+----+---------+-----+---------+--------+ 
Fetched 4 row(s) in 0.59s

निम्नलिखित का एक उदाहरण है withइम्पाला में खंड। इस उदाहरण में, हम दोनों से रिकॉर्ड प्रदर्शित कर रहे हैंemployee तथा customers जिनकी उम्र 25 से अधिक है with खंड।

[quickstart.cloudera:21000] > 
   with t1 as (select * from customers where age>25), 
   t2 as (select * from employee where age>25) 
   (select * from t1 union select * from t2);

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट देती है।

Query: with t1 as (select * from customers where age>25), t2 as (select * from employee where age>25) 
   (select * from t1 union select * from t2)
+----+---------+-----+-----------+--------+ 
| id | name    | age | address   | salary | 
+----+---------+-----+-----------+--------+ 
| 3  | mahesh  | 54  | Chennai   | 55000  | 
| 1  | subhash | 34  | Delhi     | 40000  | 
| 2  | ramesh  | 44  | Chennai   | 50000  | 
| 5  | Hardik  | 27  | Bhopal    | 40000  | 
| 4  | Rupesh  | 64  | Delhi     | 60000  | 
| 1  | Ramesh  | 32  | Ahmedabad | 20000  | 
+----+---------+-----+-----------+--------+ 
Fetched 6 row(s) in 1.73s

distinct इम्पाला में ऑपरेटर का उपयोग डुप्लिकेट को हटाकर अद्वितीय मान प्राप्त करने के लिए किया जाता है।

वाक्य - विन्यास

निम्नलिखित का सिंटैक्स है distinct ऑपरेटर।

select distinct columns… from table_name;

उदाहरण

मान लें कि हमारे पास एक तालिका है जिसका नाम है customers इम्पाला और इसकी सामग्री इस प्रकार है -

[quickstart.cloudera:21000] > select distinct id, name, age, salary from customers; 
Query: select distinct id, name, age, salary from customers

यहां आप ग्राहकों के वेतन का निरीक्षण कर सकते हैं रमेश और चैताली ने दो बार प्रवेश किया और उपयोग किया distinct ऑपरेटर, हम नीचे दिखाए गए अनुसार अद्वितीय मानों का चयन कर सकते हैं।

[quickstart.cloudera:21000] > select distinct name, age, address from customers;

निष्पादित करने पर, उपरोक्त क्वेरी निम्न आउटपुट देती है।

Query: select distinct id, name from customers
+----------+-----+-----------+ 
| name     | age | address   | 
+----------+-----+-----------+ 
| Ramesh   | 32  | Ahmedabad |
| Khilan   | 25  | Delhi     | 
| kaushik  | 23  | Kota      | 
| Chaitali | 25  | Mumbai    |
| Hardik   | 27  | Bhopal    |
| Komal    | 22  | MP        | 
+----------+-----+-----------+
Fetched 9 row(s) in 1.46s