অ্যাপাচি পিগ (Apache Pig) হাডুপ (Hadoop) ইকোসিস্টেমের একটি শক্তিশালী ডেটা প্রসেসিং টুল যা ডিস্ট্রিবিউটেড ডেটা সেটের সাথে কাজ করে। পিগ স্ক্রিপ্টে ডেটা লোড (Load) এবং স্টোর (Store) অপারেশনগুলি খুবই গুরুত্বপূর্ণ, কারণ এই অপারেশনগুলির মাধ্যমে ডেটা হাডুপ ফাইল সিস্টেম (HDFS) থেকে ইনপুট হিসেবে নেওয়া এবং আউটপুট ফাইল সিস্টেমে লেখা হয়। পিগ HDFS বা লোকাল ফাইল সিস্টেম থেকে ডেটা লোড এবং স্টোর করতে সক্ষম।
এই নিবন্ধে, আমরা HDFS থেকে ডেটা লোড এবং স্টোর করার জন্য PigStorage, TextLoader, AvroStorage, এবং ParquetStorage ইত্যাদি স্টোরেজ ফাংশন এবং অপশন সম্পর্কে বিস্তারিতভাবে আলোচনা করব।
১. HDFS থেকে Data Load করা
পিগে LOAD কমান্ড ব্যবহার করে HDFS থেকে ডেটা লোড করা হয়। এই কমান্ডের মাধ্যমে আপনি HDFS বা লোকাল ফাইল সিস্টেম থেকে ডেটা পিগ স্ক্রিপ্টে ব্যবহারযোগ্য ফর্মেটে লোড করতে পারবেন।
LOAD সিনট্যাক্স:
data = LOAD 'hdfs_path_to_data' USING PigStorage(',') AS (field1:type, field2:type, ...);
এখানে:
- 'hdfs_path_to_data': এটি সেই ফাইলের পাথ যা আপনি HDFS থেকে লোড করতে চান।
- PigStorage(','): এটি ডেলিমিটারের মাধ্যমে ডেটা লোড করতে ব্যবহৃত হয়, সাধারণত CSV বা TSV ফরম্যাটে ডেটা লোড করা হয়। আপনি অন্য ফরম্যাট যেমন Avro বা Parquet এর জন্য সংশ্লিষ্ট লোডার ব্যবহার করতে পারেন।
উদাহরণ ১: CSV ফাইল থেকে ডেটা লোড করা
-- Load employee data from HDFS
employees = LOAD 'hdfs://namenode_host/user/data/employee_data.csv' USING PigStorage(',') AS (id:int, name:chararray, salary:int);
এখানে, employee_data.csv ফাইলটি HDFS থেকে লোড করা হচ্ছে যেখানে ডেটা কমা (,) দ্বারা ডেলিমিট করা হয়েছে।
উদাহরণ ২: TextLoader ব্যবহার করে টেক্সট ফাইল লোড করা
-- Load text data from HDFS using TextLoader
text_data = LOAD 'hdfs://namenode_host/user/data/sample_text.txt' USING TextLoader() AS (line:chararray);
এখানে, TextLoader টেক্সট ফাইলের প্রতিটি লাইনের একটি chararray ফরম্যাটে লোড করবে।
২. Data Filtering এবং Processing (ফিল্টারিং এবং প্রক্রিয়াকরণ)
ডেটা লোড করার পর, আপনি বিভিন্ন ধরনের ট্রান্সফরমেশন বা ফিল্টারিং করতে পারেন। উদাহরণস্বরূপ, একটি salary ফিল্ডে বেতন ৫০,০০০ এর বেশি এমন কর্মীদের ফিল্টার করতে:
filtered_employees = FILTER employees BY salary > 50000;
এখানে, শুধুমাত্র ৫০,০০০ এর বেশি বেতন পাওয়া কর্মীদের নির্বাচিত করা হবে।
৩. HDFS এ Data Store করা
পিগে STORE কমান্ড ব্যবহার করে প্রক্রিয়াকৃত ডেটা HDFS বা লোকাল ফাইল সিস্টেমে স্টোর করা যায়। আপনি যেকোনো স্টোরেজ ফর্ম্যাট যেমন PigStorage, TextStorage, AvroStorage, ParquetStorage ইত্যাদি ব্যবহার করতে পারেন।
STORE সিনট্যাক্স:
STORE data INTO 'hdfs_path_to_output' USING PigStorage(',');
এখানে:
- 'hdfs_path_to_output': এটি সেই পাথ যেখানে আপনি প্রক্রিয়াকৃত ডেটা স্টোর করতে চান।
- PigStorage(','): এটি ডেটাকে CSV ফরম্যাটে কমা দিয়ে ডেলিমিট করে স্টোর করবে।
উদাহরণ ১: CSV ফরম্যাটে ডেটা স্টোর করা
-- Store the filtered employee data into HDFS
STORE filtered_employees INTO 'hdfs://namenode_host/user/data/filtered_employee_data' USING PigStorage(',');
এখানে, filtered_employees ডেটা CSV ফরম্যাটে HDFS এ স্টোর করা হবে।
উদাহরণ ২: TextLoader ব্যবহার করে টেক্সট ফাইল স্টোর করা
-- Store the processed text data back into HDFS
STORE text_data INTO 'hdfs://namenode_host/user/data/output_text' USING TextStorage();
এখানে, text_data ডেটা TextStorage ফরম্যাটে HDFS এ স্টোর করা হবে।
৪. Avro এবং Parquet Storage
পিগে Avro এবং Parquet ফরম্যাটে ডেটা লোড এবং স্টোর করার জন্য AvroStorage এবং ParquetStorage ব্যবহার করা হয়। এই ফরম্যাটগুলো বড় ডেটা সেটের জন্য বেশি উপযুক্ত এবং স্কিমা-বেসড ডেটা প্রক্রিয়াকরণের সুবিধা দেয়।
AvroStorage উদাহরণ:
-- Load Avro data from HDFS
avro_data = LOAD 'hdfs://namenode_host/user/data/avro_file.avro' USING AvroStorage() AS (id:int, name:chararray, salary:int);
-- Store processed Avro data back to HDFS
STORE avro_data INTO 'hdfs://namenode_host/user/data/output_avro' USING AvroStorage();
ParquetStorage উদাহরণ:
-- Load Parquet data from HDFS
parquet_data = LOAD 'hdfs://namenode_host/user/data/parquet_file.parquet' USING ParquetStorage() AS (id:int, name:chararray, salary:int);
-- Store processed Parquet data back to HDFS
STORE parquet_data INTO 'hdfs://namenode_host/user/data/output_parquet' USING ParquetStorage();
এখানে, AvroStorage এবং ParquetStorage ফরম্যাটে ডেটা লোড এবং স্টোর করার জন্য পিগের সংশ্লিষ্ট স্টোরেজ ফাংশন ব্যবহার করা হয়েছে।
৫. HDFS এবং Local File System এর মধ্যে Data Transfer
পিগে HDFS এবং Local File System এর মধ্যে ডেটা ট্রান্সফার করা যায়। উদাহরণস্বরূপ, আপনি যদি লোকাল ফাইল সিস্টেম থেকে ডেটা লোড করতে চান এবং HDFS এ সেভ করতে চান, তাহলে নিম্নলিখিত স্ক্রিপ্ট ব্যবহার করতে পারেন:
-- Load data from local file system
local_data = LOAD 'file:///home/user/data/input.txt' USING PigStorage(',') AS (id:int, name:chararray, salary:int);
-- Store processed data into HDFS
STORE local_data INTO 'hdfs://namenode_host/user/data/output_data' USING PigStorage(',');
এখানে, 'file://' দ্বারা লোকাল ফাইল সিস্টেম থেকে ডেটা লোড করা হয়েছে এবং HDFS এ স্টোর করা হয়েছে।
সারাংশ
HDFS থেকে ডেটা লোড এবং স্টোর করার জন্য পিগে LOAD এবং STORE কমান্ড ব্যবহৃত হয়, এবং আপনি বিভিন্ন স্টোরেজ ফাংশন যেমন PigStorage, AvroStorage, ParquetStorage ব্যবহার করে ডেটা লোড এবং স্টোর করতে পারেন। পিগের এই ক্ষমতা আপনাকে HDFS বা লোকাল ফাইল সিস্টেম থেকে ডেটা প্রক্রিয়াকরণে সহায়তা করে, এবং বড় ডেটা সেটের উপর কার্যকরী ট্রান্সফরমেশন সম্পাদন করতে সহায়তা করে।
Read more