Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> SQL

हाइव डायनामिक पार्टिशनिंग में महारत हासिल करना:तेज़ क्वेरीज़ के लिए स्वचालित डेटा विभाजन

<पी> Apache Hive एनालिटिक्स और MapReduce नौकरियों के लिए Hadoop पर निर्मित एक डेटा वेयरहाउसिंग सिस्टम है। तेज़ क्वेरी के लिए विभाजन बड़े डेटासेट को छोटे भागों में विभाजित करता है। डायनामिक विभाजन स्वचालित रूप से डाले गए डेटा से विभाजन मान निर्धारित करता है, स्थैतिक विभाजन के विपरीत जहां मान मैन्युअल रूप से निर्दिष्ट होते हैं।

स्थैतिक बनाम गतिशील विभाजन

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

गतिशील विभाजन सक्षम करना

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

संपूर्ण उदाहरण

<पी> एक स्रोत तालिका बनाएं, डेटा लोड करें, फिर उसे गतिशील रूप से विभाजित करें?

-- Step 1: Create source table
CREATE TABLE sales_raw (
 id INT,
 product STRING,
 amount DOUBLE,
 sale_date STRING,
 country STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-- Step 2: Load data
LOAD DATA LOCAL INPATH '/home/data/sales.csv' INTO TABLE sales_raw;
-- Step 3: Create partitioned table
CREATE TABLE sales_partitioned (
 id INT,
 product STRING,
 amount DOUBLE,
 sale_date STRING
)
PARTITIONED BY (country STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-- Step 4: Insert with dynamic partitioning
INSERT INTO TABLE sales_partitioned PARTITION (country)
SELECT id, product, amount, sale_date, country
FROM sales_raw;
<पी> हाइव स्वचालित रूप से विशिष्ट country के आधार पर विभाजन निर्देशिका बनाता है स्रोत डेटा में मान.

विभाजन का प्रबंधन

-- View partitions
SHOW PARTITIONS sales_partitioned;
-- Query specific partition (partition pruning)
SELECT * FROM sales_partitioned WHERE country = 'India';
-- Drop a partition
ALTER TABLE sales_partitioned DROP PARTITION (country = 'India');

निष्कर्ष

<पी> हाइव में गतिशील विभाजन स्वचालित रूप से INSERT के दौरान डेटा मानों से विभाजन बनाता है, जिससे प्रत्येक विभाजन को मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता समाप्त हो जाती है। यह कई अलग-अलग विभाजन मूल्यों वाले बड़े डेटासेट के लिए आदर्श है, जो मैन्युअल प्रयास को कम करते हुए विभाजन छंटाई के माध्यम से क्वेरी प्रदर्शन में सुधार करता है।

<पी> हाइव डायनामिक पार्टिशनिंग में महारत हासिल करना:तेज़ क्वेरीज़ के लिए स्वचालित डेटा विभाजन


  1. Matplotlib में श्रेणीबद्ध चर कैसे प्लॉट करें? Matplotlib में श्रेणीबद्ध चर कैसे प्लॉट करें?

    Matplotlib में श्रेणीबद्ध चरों को प्लॉट करने के लिए, हम निम्नलिखित कदम उठा सकते हैं - आकृति का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें। कुछ विवरणों के साथ एक शब्दकोश बनाएं। शब्दकोश से कुंजी और मान निकालें (चरण 2)। एक आकृति और सबप्लॉट का एक सेट बनाएं। प्लॉट बार , बिखरना और साजि

  1. एंड्रॉइड स्क्लाइट में विभाजक के साथ दो या दो से अधिक कॉलम कैसे सम्मिलित करें? एंड्रॉइड स्क्लाइट में विभाजक के साथ दो या दो से अधिक कॉलम कैसे सम्मिलित करें?

    उदाहरण में आने से पहले, हमें पता होना चाहिए कि एंड्रॉइड में एसक्लाइट डेटा बेस क्या है। SQLite एक ओपन सोर्स SQL ​​डेटाबेस है जो किसी डिवाइस पर टेक्स्ट फ़ाइल में डेटा स्टोर करता है। Android अंतर्निहित SQLite डेटाबेस कार्यान्वयन के साथ आता है। SQLite सभी रिलेशनल डेटाबेस सुविधाओं का समर्थन करता है। इस ड

  1. स्विफ्ट में टेक्स्टफिल्ड इनपुट को मान्य करने का सामान्य तरीका स्विफ्ट में टेक्स्टफिल्ड इनपुट को मान्य करने का सामान्य तरीका

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