Apache Hive विश्लेषण और MapReduce जॉब्स के लिए Hadoop पर बना एक डेटा वेयरहाउसिंग सिस्टम है। पार्टीशनिंग बड़े डेटासेट को तेज़ क्वेरी के लिए छोटे भागों में विभाजित करती है। डायनामिक पार्टीशनिंग सम्मिलित किए जा रहे डेटा से पार्टीशन मान स्वचालित रूप से निर्धारित करती है, स्टेटिक पार्टीशनिंग के विपरीत जहां मान मैन्युअल रूप से निर्दिष्ट किए जाते हैं।
स्टेटिक बनाम डायनामिक पार्टीशनिंग
| विशेषता | स्टेटिक पार्टीशनिंग | डायनामिक पार्टीशनिंग |
|---|---|---|
| पार्टीशन मान | प्रति सम्मिलन मैन्युअल रूप से निर्दिष्ट | डेटा से स्वचालित रूप से प्राप्त |
| सबसे अच्छा लिए | कुछ ज्ञात पार्टीशन | कई या अज्ञात पार्टीशन |
| WHERE क्लॉज | आवश्यक | आवश्यक नहीं |
| लचीलापन | कम | उच्च |
डायनामिक पार्टीशनिंग सक्षम करना
SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict;
पूर्ण उदाहरण
एक स्रोत टेबल बनाएं, डेटा लोड करें, फिर इसे डायनामिक रूप से पार्टीशन करें:
-- चरण 1: स्रोत टेबल बनाएं CREATE TABLE sales_raw ( id INT, product STRING, amount DOUBLE, sale_date STRING, country STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; -- चरण 2: डेटा लोड करें LOAD DATA LOCAL INPATH '/home/data/sales.csv' INTO TABLE sales_raw; -- चरण 3: पार्टीशन की गई टेबल बनाएं CREATE TABLE sales_partitioned ( id INT, product STRING, amount DOUBLE, sale_date STRING ) PARTITIONED BY (country STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; -- चरण 4: डायनामिक पार्टीशनिंग के साथ सम्मिलित करें INSERT INTO TABLE sales_partitioned PARTITION (country) SELECT id, product, amount, sale_date, country FROM sales_raw;
Hive स्रोत डेटा में विशिष्ट country मानों के आधार पर पार्टीशन डायरेक्टरी स्वचालित रूप से बनाता है।
पार्टीशन प्रबंधित करना
-- पार्टीशन देखें SHOW PARTITIONS sales_partitioned; -- विशिष्ट पार्टीशन क्वेरी करें (पार्टीशन प्रूनिंग) SELECT * FROM sales_partitioned WHERE country = 'India'; -- पार्टीशन ड्रॉप करें ALTER TABLE sales_partitioned DROP PARTITION (country = 'India');
निष्कर्ष
Hive में डायनामिक पार्टीशनिंग INSERT के दौरान डेटा मानों से पार्टीशन स्वचालित रूप से बनाती है, प्रत्येक पार्टीशन को मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता को समाप्त करती है। यह कई विशिष्ट पार्टीशन मानों वाले बड़े डेटासेट के लिए आदर्श है, पार्टीशन प्रूनिंग के माध्यम से क्वेरी प्रदर्शन में सुधार करती है जबकि मैन्युअल प्रयास को कम करती है।