FOREACH এবং GENERATE এর মাধ্যমে Data Transformation

Relational Operators এর ব্যবহার - অ্যাপাচি পিগ (Apache Pig) - Big Data and Analytics

423

অ্যাপাচি পিগ (Apache Pig) একটি শক্তিশালী ডেটা প্রসেসিং ভাষা যা হাডুপ ইকোসিস্টেমে ডেটা ট্রান্সফরমেশন এবং বিশ্লেষণ করতে ব্যবহৃত হয়। পিগের মাধ্যমে বড় ডেটা সেটের উপরে প্রক্রিয়াকরণ এবং বিভিন্ন ধরনের ডেটা ট্রান্সফরমেশন সহজেই করা সম্ভব। পিগের মধ্যে দুটি গুরুত্বপূর্ণ কিওয়ার্ড হলো FOREACH এবং GENERATE, যা মূলত ডেটার উপর ট্রান্সফরমেশন বা পরিবর্তন করতে ব্যবহৃত হয়।


FOREACH এবং GENERATE এর ভূমিকা

  • FOREACH: এটি একটি লুপের মতো কাজ করে এবং এটি পিগ স্ক্রিপ্টে একটি ট্যাবল বা রিলেশন (relation) থেকে ডেটা ইটারেট করতে ব্যবহৃত হয়। এটি প্রতি রেকর্ডের জন্য একটি বিশেষ কার্যকলাপ প্রয়োগ করে।
  • GENERATE: এটি FOREACH এর মাধ্যমে প্রাপ্ত ফলাফলগুলোকে আউটপুট হিসেবে বের করার জন্য ব্যবহৃত হয়। এটি একটি প্রজেকশন অপারেশন হিসেবে কাজ করে, যেখানে আপনি এক বা একাধিক কলাম বা ফিল্ড নির্বাচন করতে পারেন।

FOREACH এবং GENERATE এর সিনট্যাক্স

FOREACH এবং GENERATE এর সাধারণ সিনট্যাক্স নিচে দেওয়া হল:

result = FOREACH input_data GENERATE expression1, expression2, ... ;

এখানে:

  • input_data: এটি হলো আপনার ইনপুট ডেটা, যা সাধারণত একটি রিলেশন (relation) হতে পারে।
  • expression: এটি পিগের মধ্যে ব্যবহৃত এক্সপ্রেশন যা ডেটা ট্রান্সফরমেশন করার জন্য ব্যবহৃত হয়।

FOREACH এবং GENERATE এর উদাহরণ

উদাহরণ ১: সিম্পল DATA TRANSFORMATION

ধরা যাক, আমাদের কাছে একটি employee নামের টেবিল আছে, যার মধ্যে তিনটি কলাম: id, name, এবং salary

Input data (employee):

(1, 'John', 3000)
(2, 'Jane', 4000)
(3, 'Alice', 5000)

এখন, আমরা FOREACH এবং GENERATE ব্যবহার করে প্রত্যেক কর্মচারীর salary এর উপর 10% ইনক্রিমেন্ট করতে চাই।

employee = LOAD 'employee_data' USING PigStorage(',') AS (id:int, name:chararray, salary:float);

updated_employee = FOREACH employee GENERATE id, name, salary * 1.10 AS updated_salary;

DUMP updated_employee;

এখানে:

  • FOREACH employee: এই লাইনটি employee টেবিলের প্রতিটি রেকর্ডের উপর কাজ করবে।
  • GENERATE id, name, salary * 1.10 AS updated_salary: এটি salary এর মান 1.10 দিয়ে গুণ করবে এবং updated_salary নামে একটি নতুন কলাম তৈরি করবে।

Output:

(1, 'John', 3300)
(2, 'Jane', 4400)
(3, 'Alice', 5500)

উদাহরণ ২: কলামের নির্বাচন এবং ফিল্টারিং

ধরা যাক, আমাদের কাছে একটি student নামের টেবিল রয়েছে, যার মধ্যে চারটি কলাম: id, name, age, এবং marks

Input data (student):

(1, 'John', 18, 75)
(2, 'Jane', 19, 85)
(3, 'Alice', 20, 90)

এবার, আমরা FOREACH এবং GENERATE ব্যবহার করে কেবলমাত্র name এবং marks কলাম নির্বাচন করতে চাই।

students = LOAD 'student_data' USING PigStorage(',') AS (id:int, name:chararray, age:int, marks:int);

selected_data = FOREACH students GENERATE name, marks;

DUMP selected_data;

এখানে:

  • FOREACH students: এই লাইনটি students টেবিলের প্রতিটি রেকর্ডে ইটারেট করবে।
  • GENERATE name, marks: এই লাইনটি শুধু name এবং marks কলামগুলো নির্বাচন করবে।

Output:

('John', 75)
('Jane', 85)
('Alice', 90)

উদাহরণ ৩: মডিফাইড ডেটা বা কলাম যুক্ত করা

ধরা যাক, আমরা চাই যে, যদি marks 80 এর বেশি হয়, তবে সেই ছাত্রের নামের আগে "Excellent" শব্দটি যোগ করা হবে। অন্যথায়, নামের আগে "Good" শব্দটি যোগ করা হবে।

students = LOAD 'student_data' USING PigStorage(',') AS (id:int, name:chararray, age:int, marks:int);

modified_data = FOREACH students GENERATE 
    (marks > 80 ? CONCAT('Excellent ', name) : CONCAT('Good ', name)) AS modified_name, 
    marks;

DUMP modified_data;

এখানে:

  • marks > 80 ? CONCAT('Excellent ', name) : CONCAT('Good ', name): এটি একটি কন্ডিশনাল এক্সপ্রেশন যেখানে যদি marks 80 এর বেশি হয় তবে "Excellent" শব্দটি যোগ হবে, অন্যথায় "Good" শব্দটি যোগ হবে।
  • GENERATE modified_name, marks: এটি modified_name কলাম এবং marks কলাম নির্বাচিত করবে।

Output:

('Good John', 75)
('Excellent Jane', 85)
('Excellent Alice', 90)

FOREACH এবং GENERATE এর গুরুত্বপূর্ণ পয়েন্টস

  • FOREACH: এটি একটি লুপের মতো কাজ করে এবং এটি পিগে প্রক্রিয়াকরণ করতে ব্যবহৃত হয়।
  • GENERATE: এটি FOREACH এর ফলাফলকে আউটপুট ফর্ম্যাটে তৈরি করে।
  • আপনি FOREACH এবং GENERATE ব্যবহার করে ডেটা ফিল্টার, ট্রান্সফর্ম, বা গণনা করতে পারেন।
  • Pig Latin ভাষায় অন্যান্য প্রক্রিয়া যেমন JOIN, GROUP, FILTER, ORDER BY ইত্যাদিও ব্যবহার করা যায়, যা ডেটার উপর আরও উন্নত ট্রান্সফরমেশন প্রদান করে।

সারাংশ

FOREACH এবং GENERATE অ্যাপাচি পিগে ডেটা ট্রান্সফরমেশনের জন্য দুটি অত্যন্ত গুরুত্বপূর্ণ কিওয়ার্ড। FOREACH প্রতিটি রেকর্ডে একটি নির্দিষ্ট কার্যকলাপ প্রয়োগ করার জন্য ব্যবহৃত হয়, এবং GENERATE সেই কার্যকলাপের ফলাফলকে আউটপুটে রূপান্তরিত করে। এগুলির মাধ্যমে ডেটা ট্রান্সফরমেশন, কলাম নির্বাচন, ফিল্টারিং, এবং নতুন ডেটা তৈরি করা সম্ভব। এই দুটি কিওয়ার্ড পিগের ডেটা প্রসেসিং ক্ষমতাকে আরও শক্তিশালী এবং কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...