অ্যাপাচি পিগ (Apache Pig) একটি শক্তিশালী টুল যা হাডুপ ইকোসিস্টেমের মধ্যে ডেটা প্রসেসিং এবং ট্রান্সফরমেশন করার জন্য ব্যবহৃত হয়। CROSS এবং UNION অপারেটরগুলি ডেটা ইনটিগ্রেশন বা একত্রিতকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ। এই অপারেটরগুলির মাধ্যমে একাধিক ডেটাসেটের মধ্যে সম্পর্ক তৈরি করা, ডেটা যোগ করা, এবং ডেটা একত্রিত করা সম্ভব।
এখানে আমরা CROSS এবং UNION অপারেটরগুলির মাধ্যমে ডেটা একত্রিতকরণের কৌশল নিয়ে আলোচনা করবো।
CROSS (ক্রস)
CROSS অপারেটরটি দুটি বা তার বেশি ডেটা সেটের মধ্যে একটি Cartesian Product তৈরি করে। এটি প্রত্যেকটি রেকর্ডকে অন্য টেবিলের সব রেকর্ডের সাথে মিলিয়ে দেয়। এর ফলে, এক টেবিলের প্রতিটি রেকর্ডের সাথে অপর টেবিলের সব রেকর্ড সংযুক্ত হয়ে যায়।
CROSS এর ব্যবহার
যদি আমাদের দুটি ডেটা সেট থাকে, যেমন employees এবং departments, এবং আমরা চাই দুটি টেবিলের সমস্ত কম্বিনেশন বা Cartesian Product তৈরি করতে, তাহলে CROSS অপারেটর ব্যবহার করা হয়।
সিনট্যাক্স:
result = CROSS dataset1, dataset2;
উদাহরণ:
ধরা যাক, আমাদের দুটি টেবিল রয়েছে:
- employees (id, name)
- departments (dept_id, dept_name)
employees টেবিল:
(1, 'John')
(2, 'Jane')
departments টেবিল:
(101, 'HR')
(102, 'Finance')
CROSS ব্যবহার করে এই দুইটি টেবিলের Cartesian Product তৈরি করা:
employees = LOAD 'employees.txt' USING PigStorage(',') AS (id:int, name:chararray);
departments = LOAD 'departments.txt' USING PigStorage(',') AS (dept_id:int, dept_name:chararray);
crossed_data = CROSS employees, departments;
এখানে, CROSS অপারেটর employees এবং departments টেবিলের সমস্ত কম্বিনেশন তৈরি করবে।
Output Example:
(1, 'John', 101, 'HR')
(1, 'John', 102, 'Finance')
(2, 'Jane', 101, 'HR')
(2, 'Jane', 102, 'Finance')
এটি একটি Cartesian Product তৈরি করেছে যেখানে employees এবং departments টেবিলের প্রতিটি রেকর্ড একে অপরের সাথে সংযুক্ত হয়ে নতুন রেকর্ড তৈরি করেছে।
UNION (ইউনিয়ন)
UNION অপারেটর দুটি বা তার বেশি ডেটাসেটের রেকর্ডগুলো একত্রিত করে একটি একক ডেটাসেটে পরিণত করে। UNION ব্যবহৃত হলে, এটি দুটি ডেটাসেটের সকল রেকর্ডকে যোগ করে, তবে এটি ডুপ্লিকেট রেকর্ড বাদ দেয়। অর্থাৎ, UNION একটি ডেটা সেটের মধ্যে থাকা সকল ইউনিক রেকর্ড একত্রিত করে।
UNION এর ব্যবহার
যদি দুটি টেবিল থাকে এবং আপনি উভয় টেবিলের সমস্ত রেকর্ড একত্রিত করতে চান, তবে UNION ব্যবহার করা হয়। এটি দুটি ডেটা সেটকে একটি একক ডেটাসেটে যুক্ত করবে।
সিনট্যাক্স:
result = UNION dataset1, dataset2;
উদাহরণ:
ধরা যাক, আমাদের দুটি টেবিল রয়েছে:
- sales_2019 (id, amount)
- sales_2020 (id, amount)
sales_2019 টেবিল:
(1, 1000)
(2, 1500)
sales_2020 টেবিল:
(3, 1200)
(4, 1800)
এখন, sales_2019 এবং sales_2020 টেবিলের রেকর্ডগুলো একত্রিত করতে UNION ব্যবহার করা হয়:
sales_2019 = LOAD 'sales_2019.txt' USING PigStorage(',') AS (id:int, amount:int);
sales_2020 = LOAD 'sales_2020.txt' USING PigStorage(',') AS (id:int, amount:int);
combined_sales = UNION sales_2019, sales_2020;
এখানে, UNION অপারেটরটি sales_2019 এবং sales_2020 টেবিলের রেকর্ডগুলো একত্রিত করবে।
Output Example:
(1, 1000)
(2, 1500)
(3, 1200)
(4, 1800)
এখানে, UNION অপারেটর দুটি টেবিলের সকল রেকর্ড একত্রিত করেছে। UNION একটি ডুপ্লিকেট রেকর্ড বাদ দিয়ে সব ইউনিক রেকর্ড ফেরত দেবে।
CROSS এবং UNION এর মধ্যে পার্থক্য
| প্রপার্টি | CROSS | UNION |
|---|---|---|
| ফাংশন | Cartesian Product তৈরি করে | দুটি বা তার বেশি ডেটাসেট একত্রিত করে |
| আউটপুট | প্রতিটি রেকর্ডের সাথে অন্য টেবিলের সব রেকর্ডের কম্বিনেশন | ডেটাসেটগুলোর রেকর্ড একত্রিত করে |
| ডুপ্লিকেট রেকর্ড | থাকে | ডুপ্লিকেট রেকর্ড বাদ দেয়া হয় |
| কাজের ধরন | সমস্ত রেকর্ডের মিশ্রণ বা মিল | রেকর্ডগুলির যোগফল (combining records) |
CROSS এবং UNION ব্যবহার করার সুবিধা
- CROSS:
- এটি সমস্ত রেকর্ডের সম্পর্ক তৈরি করতে সাহায্য করে, যেখানে আপনাকে সমস্ত সম্ভাব্য কম্বিনেশন দেখতে হয়।
- বিশেষ করে Cartesian Product তৈরি করার জন্য ব্যবহৃত হয়।
- UNION:
- দুটি ডেটাসেটকে একত্রিত করার জন্য ব্যবহৃত হয়, যেখানে ডেটাসেটের প্রতিটি রেকর্ড একত্রিত করা হয়।
- এটি ডুপ্লিকেট রেকর্ড ফিল্টার করে এবং ইউনিক রেকর্ডগুলি একত্রিত করে।
Conclusion
অ্যাপাচি পিগে CROSS এবং UNION অপারেটরগুলি ডেটা ইনটিগ্রেশন এবং ম্যানিপুলেশনে অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। CROSS অপারেটরটি Cartesian Product তৈরি করে, যা সব রেকর্ডের সব কম্বিনেশন তৈরি করে, এবং UNION অপারেটরটি দুটি বা তার বেশি ডেটাসেটের রেকর্ডগুলো একত্রিত করে একটি নতুন ডেটা সেট তৈরি করে। এই অপারেটরগুলি পিগে ডেটা একত্রিত এবং বিশ্লেষণ করতে সাহায্য করে, যা বড় পরিমাণের ডেটা প্রসেসিংয়ের জন্য অত্যন্ত কার্যকর।
Read more