हाइव डेटा प्रकार: हाइव में डेटाबेस कैसे बनाएं और हटाएं

⚡ स्मार्ट सारांश

हाइव डेटा प्रकार यह परिभाषित करते हैं कि प्रत्येक तालिका कॉलम क्या धारण कर सकता है, और CREATE DATABASE और DROP DATABASE कमांड हाइव मेटास्टोर के भीतर उन तालिकाओं के नेमस्पेस को स्थापित या हटाते हैं।

  • 🔢 संख्यात्मक प्रकार: TINYINT से लेकर BIGINT तक पूर्णांक संख्याओं को कवर करते हैं, जबकि DECIMAL(precision, scale) सटीक मानों को बनाए रखता है जिन्हें FLOAT और DOUBLE नहीं रख सकते।
  • 🔤 स्ट्रिंग प्रकार: STRING की कोई घोषित सीमा नहीं होती, VARCHAR 1 से 65535 वर्णों तक स्वीकार करता है, और CHAR अधिकतम 255 वर्णों तक सीमित होता है।
  • 📅 तिथि और समय: DATE एक साधारण YYYY-MM-DD मान संग्रहीत करता है और TIMESTAMP इसमें वैकल्पिक नैनोसेकंड परिशुद्धता जोड़ता है।
  • 🧩 जटिल प्रकार: ARRAY, MAP, STRUCT और UNIONTYPE कई संबंधित मानों को अनेक कॉलमों के बजाय एक ही कॉलम में पैक करते हैं।
  • 🏗️ डेटाबेस बनाएं: CREATE DATABASE मेटास्टोर में एक नेमस्पेस को पंजीकृत करता है, और SHOW DATABASES इसकी मौजूदगी की पुष्टि करता है।
  • ️ डेटाबेस हटाएं: DROP DATABASE कमांड नेमस्पेस को हटा देता है, और CASCADE कमांड तब आवश्यक होता है जब टेबल अभी भी इसके अंदर मौजूद हों।

हाइव डेटा प्रकार और हाइव में डेटाबेस बनाने और हटाने का तरीका

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

नीचे हाइव में मौजूद कुछ डेटा प्रकारों का संक्षिप्त विवरण दिया गया है:

  • संख्यात्मक प्रकार
  • स्ट्रिंग प्रकार
  • दिनांक/समय प्रकार
  • जटिल प्रकार

हाइव में डेटा प्रकार

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

हाइव संख्यात्मक डेटा प्रकार

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

प्रकार स्मृति आवंटन
टिन्यिन्ट 1-बाइट हस्ताक्षरित पूर्णांक (-128 से 127)
लघु 2-बाइट हस्ताक्षरित पूर्णांक (-32,768 से 32,767)
INT 4-बाइट हस्ताक्षरित पूर्णांक (-2,147,483,648 से 2,147,483,647)
बिगिनट 8-बाइट हस्ताक्षरित पूर्णांक (-9,223,372,036,854,775,808 से 9,223,372,036,854,775,807)
फ्लोट 4-बाइट एकल परिशुद्धता फ्लोटिंग पॉइंट संख्या
डबल 8-बाइट डबल प्रेसिजन फ्लोटिंग पॉइंट संख्या
दशमलव हम इस प्रकार में परिशुद्धता और पैमाने को DECIMAL(precision, scale) के रूप में परिभाषित कर सकते हैं। जब इन्हें छोड़ दिया जाता है तो Hive DECIMAL(10,0) का उपयोग करता है।

हाइव स्ट्रिंग डेटा प्रकार

कैरेक्टर कॉलम तीन आकारों में आते हैं, और अंतर यह है कि क्या हाइव घोषित लंबाई को लागू करता है या नहीं।

प्रकार लंबाई
CHAR निश्चित लंबाई, अधिकतम 255 अक्षर। छोटी लंबाई में रिक्त स्थान जोड़े जाते हैं।
VARCHAR 1 से 65,535 अक्षर तक। इससे अधिक मान को स्वयं ही छोटा कर दिया जाता है।
STRING है हम यहां लंबाई परिभाषित कर सकते हैं (कोई सीमा नहीं)।

हाइव दिनांक/समय डेटा प्रकार

टेम्पोरल कॉलम बिना किसी टाइम-ज़ोन ऑफ़सेट के संग्रहीत किए जाते हैं, जिसे विभिन्न क्लस्टरों द्वारा लिखे गए मूल्यों की तुलना करने से पहले याद रखना महत्वपूर्ण है।

प्रकार प्रयोग
टाइमस्टैम्प पारंपरिक का समर्थन करता है यूनिक्स वैकल्पिक नैनोसेकंड परिशुद्धता के साथ टाइमस्टैम्प
तारीख यह YYYY-MM-DD प्रारूप में है।
दिनांक प्रकार के लिए समर्थित मानों की सीमा 0000-01-01 से 9999-12-31 तक है, जो प्रिमिटिव द्वारा समर्थन पर निर्भर करती है। Java दिनांक प्रकार

हाइव विविध डेटा प्रकार

दो अन्य मूलभूत तत्व संख्यात्मक, स्ट्रिंग और दिनांक परिवारों से बाहर स्थित हैं, लेकिन वास्तविक योजनाओं में नियमित रूप से दिखाई देते हैं।

प्रकार प्रयोग
बूलियन सही या गलत को स्टोर करता है
बायनरी यह बाइट्स का एक ऐरे स्टोर करता है, जिससे रॉ कंटेंट स्ट्रिंग कॉलम से बाहर रहता है।

हाइव जटिल डेटा प्रकार

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

प्रकार प्रयोग
Arrays सरणी
नकारात्मक मान और गैर-स्थिर अभिव्यक्तियाँ स्वीकार्य नहीं हैं
मैप्स मानचित्र
नकारात्मक मान और गैर-स्थिर अभिव्यक्तियाँ स्वीकार्य नहीं हैं
संरचनाएँ struct
संघ यूनियनटाइप

हाइव कॉम्प्लेक्स डेटा प्रकारों का उदाहरण

ऊपर दी गई तालिका घोषणा प्रपत्र दर्शाती है। नीचे दिया गया कथन तीन जटिल प्रकारों को एक ही तालिका में रखता है ताकि सीमांकक खंड और एक्सेस सिंटैक्स को एक साथ देखा जा सके।

CREATE TABLE employees (
  name      STRING,
  skills    ARRAY<STRING>,
  deductions MAP<STRING, FLOAT>,
  address   STRUCT<street:STRING, city:STRING, pin:INT>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

यहां तीन अलग-अलग विभाजकों की आवश्यकता है: एक स्तंभों के बीच, दूसरा किसी ऐरे या स्ट्रक्चर के आइटमों के बीच, और तीसरा मैप कुंजी और उसके मान के बीच। एक बार तालिका बन जाने के बाद, प्रत्येक जटिल स्तंभ को उसके अपने एक्सेससर के साथ पढ़ा जाता है।

SELECT name, skills[0], deductions['tax'], address.city
FROM employees;

नीचे दी गई तालिका में यह बताया गया है कि कौन सा एक्सेसरी किस प्रकार का है।

प्रकार किसी मान को कैसे पढ़ा जाता है
ARRAY शून्य-आधारित सूचकांक, जैसे कि कौशल[0]
एमएपी वर्ग कोष्ठक में कुंजी खोज, जैसे कि deductions['tax']
struct फ़ील्ड नाम पर डॉट का संकेत, जैसे कि address.city
यूनियनटाइप इसका उपयोग बहुत कम होता है, क्योंकि इसके लिए क्वेरी सपोर्ट अभी तक अधूरा है।

जटिल प्रकारों को नेस्टेड किया जा सकता है, इसलिए ARRAY > एक मान्य कॉलम घोषणा है। कॉलम लेआउट तय हो जाने के बाद, तालिकाओं का निर्माण ऊपर वर्णित कथनों के आधार पर किया जाता है। Hive में टेबल बनाएं, बदलें और हटाएं.

हाइव में डेटाबेस कैसे बनाएं और हटाएं

Hive में डेटाबेस एक ऐसा नेमस्पेस होता है जो टेबलों को समूहबद्ध करता है, इसलिए किसी भी टेबल पर काम शुरू करने से पहले यही पहला ऑब्जेक्ट होता है जिसे बनाना पड़ता है। Hive में डेटाबेस बनाने और हटाने के चरण नीचे दिए गए हैं।

चरण 1) हाइव में डेटाबेस बनाएं

Hive शेल में डेटाबेस बनाने के लिए, हमें नीचे दिए गए सिंटैक्स के अनुसार कमांड का उपयोग करना होगा:

सिंटेक्स:

Create database <DatabaseName>

उदाहरण: “guru99” नाम का डेटाबेस बनाएं

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

Hive शेल का उपयोग करके guru99 डेटाबेस बनाना और show कमांड का उपयोग करके डेटाबेस की सूची बनाना।

ऊपर दिए गए स्क्रीनशॉट से हम दो काम कर रहे हैं:

  1. हाइव में डेटाबेस “guru99” बनाना
  2. “show” कमांड का उपयोग करके मौजूदा डेटाबेस प्रदर्शित करना

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

चरण 2) हाइव में डेटाबेस को हटाएँ

बूंद के लिएping Hive शेल में डेटाबेस को ड्रॉप करने के लिए, हमें नीचे दिए गए सिंटैक्स के अनुसार "ड्रॉप" कमांड का उपयोग करना होगा:

सिंटेक्स:

Drop database <DatabaseName>

उदाहरण: ड्रॉप डेटाबेस गुरु99

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

छत्ते का खोल गिरनाping गुरु99 डेटाबेस और शो के साथ हटाने की पुष्टि करना

ऊपर दिए गए स्क्रीनशॉट में हम दो काम कर रहे हैं:

  1. हम ड्रॉप हैंping Hive से डेटाबेस 'guru99'
  2. “show” कमांड के साथ इसकी क्रॉस जाँच करें

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

Hive डेटाबेस कमांड: USE, DESCRIBE, SHOW और ALTER DATABASE

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

CREATE DATABASE [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];
DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];

पूरे कोड में DATABASE और SCHEMA कीवर्ड एक दूसरे के स्थान पर उपयोग किए जा सकते हैं, इसलिए CREATE SCHEMA और CREATE DATABASE दोनों कमांड एक ही कार्य करते हैं। शेष कमांड नेमस्पेस से संबंधित दैनिक कार्यों को पूरा करते हैं।

आदेश यह क्या करता है
डेटाबेस दिखाएँ; मेटास्टोर में पंजीकृत सभी डेटाबेस की सूची दिखाता है
डेटाबेस_नाम का उपयोग करें; वर्तमान डेटाबेस को इस प्रकार सेट करता है कि तालिका नामों को किसी उपसर्ग की आवश्यकता नहीं होती है।
डेटाबेस का वर्णन करें: database_name; यह टिप्पणी, एचडीएफएस स्थान और स्वामी की जानकारी देता है।
डेटाबेस का वर्णन करें (विस्तारित डेटाबेस_नाम); उस आउटपुट में DBPROPERTIES कुंजी-मान युग्म जोड़ता है
ALTER DATABASE database_name SET DBPROPERTIES (…); मेटाडेटा गुणों को जोड़ता या बदलता है
ALTER DATABASE database_name SET OWNER USER user_name; स्वामित्व को किसी अन्य उपयोगकर्ता या भूमिका को हस्तांतरित करता है
ALTER DATABASE database_name SET LOCATION hdfs_path; इसके बाद बनाई जाने वाली तालिकाओं द्वारा उपयोग किए जाने वाले पथ को बदल देता है।

दो डिफ़ॉल्ट सेटिंग्स याद रखने लायक हैं। LOCATION क्लॉज़ के बिना, फ़ाइलें वेयरहाउस डायरेक्टरी के अंतर्गत होती हैं, सामान्यतः /user/hive/warehouse/database_name.db, और IF EXISTS के बिना, किसी गुम नाम के विरुद्ध ड्रॉप करने पर त्रुटि उत्पन्न होती है, न कि वह चुपचाप पास हो जाती है। ये दोनों सेटिंग्स इसमें रखी जाती हैं। हाइव मेटास्टोर.

हाइव डेटा प्रकार रूपांतरण और सामान्य त्रुटियाँ

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

  • अंतर्निहित विस्तार TINYINT से SMALLINT से INT से BIGINT से FLOAT से DOUBLE की श्रृंखला का अनुसरण करता है, और अंकों को धारण करने वाली STRING को DOUBLE में पदोन्नत किया जाता है।
  • संकुचन अपने आप नहीं होता, इसलिए एक INT कॉलम को असाइन किए गए DOUBLE को लिखित रूपांतरण की आवश्यकता होती है।
  • CAST लिखित रूपांतरण करता है, और जब मान परिवर्तित नहीं हो पाता है तो यह त्रुटि के बजाय NULL लौटाता है।
SELECT CAST(salary AS DECIMAL(10,2)) FROM employees;

नीचे दी गई त्रुटियाँ उन अधिकांश आश्चर्यों का कारण बनती हैं जिनका सामना शुरुआती लोगों को अपने पहले स्कीमा में करना पड़ता है।

लक्षण कारण और समाधान
डेटाबेस में टेबल मौजूद रहने पर ड्रॉप प्रक्रिया विफल हो जाती है। RESTRICT डिफ़ॉल्ट विकल्प है। इससे जुड़ी तालिकाओं को हटाने के लिए CASCADE जोड़ें।
एक लंबी डोरी छोटी होकर आती है VARCHAR अपनी घोषित लंबाई से आगे चुपचाप डेटा को छोटा कर देता है। जब कोई सीमा निर्धारित करने की आवश्यकता न हो तो STRING का उपयोग करें।
रूपांतरण के बाद एक कॉलम NULL के रूप में पढ़ा जाता है CAST मान को पार्स नहीं कर सका। टाइप को विस्तारित करने से पहले स्रोत डेटा की जाँच करें।
मुद्रा के मूल्यों में पैसे या सेंट की कमी हो जाती है। बिना आर्गुमेंट के DECIMAL का मतलब है DECIMAL(10,0)। स्केल को स्पष्ट रूप से बताएँ।
दो एक जैसी दिखने वाली तारीखें कभी मेल नहीं खातीं। एक स्ट्रिंग डेट और एक डेट कॉलम अलग-अलग प्रकार हैं। तुलना करने से पहले एक पक्ष को कास्ट करें।

एक बार जब डेटा प्रकार सही ढंग से काम करने लगें, तो अगला चरण डेटा को लोड करना और उस पर क्वेरी करना है, जिसके बारे में आगे बताया गया है। Order By, Group By और के साथ Hive क्वेरी Cluster By.

अक्सर पूछे जाने वाले प्रश्न

नहीं। HiveQL में DATABASE और SCHEMA परस्पर उपयोग किए जा सकने वाले कीवर्ड हैं, इसलिए CREATE SCHEMA sales और CREATE DATABASE sales दोनों से एक ही मेटास्टोर ऑब्जेक्ट बनता है। यह चुनाव पूरी तरह से कंपनी की कार्यप्रणाली पर निर्भर करता है।

वेयरहाउस डायरेक्टरी के अंतर्गत, आमतौर पर HDFS पर /user/hive/warehouse/database_name.db पाथ होता है। CREATE DATABASE में LOCATION क्लॉज़ इस पाथ को ओवरराइड कर देता है, और DESCRIBE DATABASE वास्तव में उपयोग किए गए स्थान की रिपोर्ट करता है।

STRING आमतौर पर चुना जाता है क्योंकि इसकी कोई घोषित सीमा नहीं होती और इसमें पैडिंग की आवश्यकता नहीं होती। VARCHAR तब उपयोगी होता है जब लंबाई को अनिवार्य करना हो, और CHAR छोटे, निश्चित चौड़ाई वाले कोड जैसे कि देशों के संक्षिप्त नाम के लिए उपयुक्त होता है।

DOUBLE बाइनरी फ्लोटिंग पॉइंट है, इसलिए बार-बार किए जाने वाले योग में कुछ सेंट के अंशों का अंतर आ सकता है। DECIMAL निर्दिष्ट परिशुद्धता और पैमाने पर सटीक मान संग्रहीत करता है, जिससे वित्तीय योग को बार-बार दोहराने योग्य बनाए रखा जा सकता है।

एक साधारण टाइमस्टैम्प समय क्षेत्र से मुक्त होता है और इसे ठीक उसी रूप में पढ़ा जाता है जैसा लिखा गया है। Hive 3.1 में TIMESTAMP WITH LOCAL TIME ZONE जोड़ा गया है, जो लिखने के समय मान को UTC में सामान्यीकृत करता है और पढ़ने के समय उसे परिवर्तित करता है।

हाँ। एक STRUCT एक ARRAY के अंदर हो सकता है और एक MAP वैल्यू स्वयं एक STRUCT हो सकती है, इसलिए ARRAY > मान्य है करंडडीप नेस्टिंग से डिलिमिटर्स जटिल हो जाते हैं, इसलिए इसे शैलो रखें।

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

कोपायलट एक संक्षिप्त टिप्पणी से CREATE TABLE और CREATE DATABASE स्टेटमेंट तैयार करता है, और एजेंटिक असिस्टेंट एक सैंपल फ़ाइल को स्कीमा में परिवर्तित कर सकते हैं। परिणाम चलाने से पहले हमेशा दशमलव स्केल और सीमांकक खंडों की जाँच करें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: