Apache Hive হল একটি ডেটা গুদামজাতকরণ সিস্টেম যা Hadoop-এ বিশ্লেষণ এবং MapReduce কাজের জন্য নির্মিত। বিভাজন দ্রুত প্রশ্নের জন্য বড় ডেটাসেটকে ছোট অংশে ভাগ করে। ডাইনামিক পার্টিশন স্বয়ংক্রিয়ভাবে ঢোকানো ডেটা থেকে পার্টিশন মান নির্ধারণ করে, স্ট্যাটিক পার্টিশনের বিপরীতে যেখানে মানগুলি ম্যানুয়ালি নির্দিষ্ট করা হয়।
স্ট্যাটিক বনাম ডাইনামিক পার্টিশনিং
ডাইনামিক পার্টিশন সক্রিয় করা হচ্ছে
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;
Hive স্বয়ংক্রিয়ভাবে স্বতন্ত্র 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');
উপসংহার
Hive-এ ডাইনামিক পার্টিশনিং স্বয়ংক্রিয়ভাবে INSERT-এর সময় ডেটা মান থেকে পার্টিশন তৈরি করে, প্রতিটি পার্টিশনকে ম্যানুয়ালি নির্দিষ্ট করার প্রয়োজনীয়তা দূর করে। এটি অনেকগুলি স্বতন্ত্র পার্টিশন মান সহ বড় ডেটাসেটের জন্য আদর্শ, ম্যানুয়াল প্রচেষ্টা হ্রাস করার সময় পার্টিশন ছাঁটাইয়ের মাধ্যমে কোয়েরির কার্যকারিতা উন্নত করে৷