Hive ডেটা লোডিংয়ের জন্য বিভিন্ন পদ্ধতি সরবরাহ করে, যাতে আপনি বিভিন্ন ফাইল সিস্টেম থেকে (যেমন, Local এবং HDFS) ডেটা আপনার Hive টেবিলের মধ্যে লোড করতে পারেন। দুটি প্রধান কমান্ড যা ডেটা লোড করতে ব্যবহৃত হয় তা হলো LOAD DATA এবং INSERT INTO। এই কমান্ড দুটি ব্যবহারের মাধ্যমে Hive-এ ডেটা লোড করা যেতে পারে, কিন্তু এগুলির ব্যবহার এবং কার্যকারিতা কিছুটা ভিন্ন।
LOAD DATA কমান্ড
LOAD DATA কমান্ড ব্যবহার করে আপনি Local ফাইল সিস্টেম বা HDFS থেকে Hive টেবিলের মধ্যে ডেটা লোড করতে পারেন। এই কমান্ডটি সাধারণত যখন আপনার ডেটা ফাইল কোন নির্দিষ্ট লোকাল ডিরেক্টরি বা HDFS থেকে Hive টেবিলে সরিয়ে আনতে চান, তখন ব্যবহৃত হয়।
LOAD DATA কমান্ডের সিনট্যাক্স:
LOAD DATA [LOCAL] INPATH '<path>' [OVERWRITE] INTO TABLE <table_name>;
- LOCAL: যদি আপনি Local ফাইল সিস্টেম থেকে ডেটা লোড করতে চান, তবে এই অপশনটি ব্যবহার করতে হবে। যদি আপনি LOCAL না ব্যবহার করেন, তবে ডেটা সরাসরি HDFS থেকে লোড হবে।
- INPATH: এখানে আপনি লোড করার জন্য ফাইল বা ডিরেক্টরির পথ প্রদান করবেন। এই পথটি Local বা HDFS-এ থাকতে পারে।
- OVERWRITE: এই অপশনটি ব্যবহার করলে, যদি টেবিলটি আগে থেকেই ডেটা থাকে, তাহলে পূর্বের ডেটা মুছে দিয়ে নতুন ডেটা লোড হবে।
- INTO TABLE: এটি সেই টেবিলের নাম যেখানে আপনি ডেটা লোড করতে চান।
LOAD DATA উদাহরণ:
Local ফাইল সিস্টেম থেকে Hive টেবিলে ডেটা লোড করার উদাহরণ:
LOAD DATA LOCAL INPATH '/home/user/data.csv' INTO TABLE sales;
এটি /home/user/data.csv ফাইলটি Local ফাইল সিস্টেম থেকে Hive টেবিল sales এ লোড করবে।
HDFS থেকে ডেটা লোড করার উদাহরণ:
LOAD DATA INPATH '/user/hive/warehouse/sales.csv' INTO TABLE sales;
এটি /user/hive/warehouse/sales.csv ফাইলটি HDFS থেকে Hive টেবিল sales এ লোড করবে।
INSERT INTO কমান্ড
INSERT INTO কমান্ডটি Hive টেবিলে ডেটা সন্নিবেশ করার জন্য ব্যবহৃত হয়। এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনি একটি SELECT কুয়েরি থেকে ডেটা নিয়ে Hive টেবিলে ইনসার্ট করতে চান অথবা অন্য কোনো টেবিল থেকে ডেটা কপি করতে চান।
INSERT INTO কমান্ডের সিনট্যাক্স:
INSERT INTO TABLE <table_name> [PARTITION (part_col1=value1, part_col2=value2 ...)]
SELECT <column_list> FROM <source_table> WHERE <condition>;
- INTO TABLE: ডেটা ইনসার্ট করার জন্য যে টেবিলটি নির্দিষ্ট করবেন।
- PARTITION: যদি আপনি কোনো নির্দিষ্ট পার্টিশন ব্যবহার করতে চান, তবে এখানে পার্টিশন কলাম ও এর মান প্রদান করবেন। এটি পার্টিশনড টেবিলের জন্য।
- SELECT: এটি সেই কুয়েরি যা থেকে ডেটা সংগ্রহ করা হবে। সাধারণত অন্য টেবিল বা ফাইল থেকে ডেটা বের করে নতুন টেবিলে সন্নিবেশ করা হয়।
INSERT INTO উদাহরণ:
একটি টেবিল থেকে অন্য টেবিলে ডেটা ইনসার্ট করার উদাহরণ:
INSERT INTO TABLE sales SELECT * FROM temp_sales WHERE amount > 1000;
এটি temp_sales টেবিল থেকে সেই সমস্ত রেকর্ড যেখানে amount > 1000 শর্ত পূর্ণ হয়, তা sales টেবিলে ইনসার্ট করবে।
পার্টিশনড টেবিলে ডেটা ইনসার্ট করার উদাহরণ:
INSERT INTO TABLE sales PARTITION (year='2024', month='12')
SELECT * FROM temp_sales WHERE date >= '2024-12-01';
এটি temp_sales টেবিল থেকে 2024-12-01 তারিখের পরবর্তী ডেটা নিয়ে sales টেবিলের year='2024' এবং month='12' পার্টিশনে ইনসার্ট করবে।
LOAD DATA এবং INSERT INTO এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | LOAD DATA | INSERT INTO |
|---|---|---|
| ডেটা সোর্স | Local অথবা HDFS ফাইল সিস্টেম থেকে ডেটা লোড করা হয়। | টেবিল বা কুয়েরি থেকে ডেটা ইনসার্ট করা হয়। |
| পারফরম্যান্স | দ্রুত, কারণ এটি ফাইলের ডেটা সরাসরি টেবিলে কপি করে। | একটু ধীর হতে পারে, কারণ কুয়েরি বা সিলেক্ট অপারেশন যুক্ত থাকে। |
| ডেটা যোগ করার পদ্ধতি | ডেটা সরাসরি টেবিলে লোড করা হয়। | কুয়েরি ফলাফল টেবিলে সন্নিবেশ করা হয়। |
| টেবিলের স্ট্রাকচার | টেবিলের কাঠামো এবং পার্টিশন ঠিক থাকতে হবে। | টেবিলের কাঠামো এবং পার্টিশন কলাম অটোমেটিকভাবে বিবেচিত হয়। |
| ডেটা সংশোধন | কোনো ডেটা সংশোধন সম্ভব নয়; ডেটা লোড করার সময় পরিবর্তন করা যায়। | ইনসার্ট করার সময় ডেটা প্রসেসিং বা পরিবর্তন করা সম্ভব। |
উপসংহার
Hive-এ LOAD DATA এবং INSERT INTO দুটি গুরুত্বপূর্ণ কমান্ড যা ডেটা লোড করার জন্য ব্যবহৃত হয়। LOAD DATA কমান্ডটি ফাইল সিস্টেম থেকে ডেটা সরাসরি Hive টেবিলে লোড করার জন্য উপযোগী, যেখানে INSERT INTO সাধারণত কুয়েরি থেকে ডেটা সন্নিবেশ করতে ব্যবহৃত হয়। LOAD DATA সাধারণত দ্রুত, তবে INSERT INTO-তে কুয়েরি অপ্টিমাইজেশন এবং ডেটা প্রসেসিংয়ের ক্ষমতা থাকে।
Read more