MapReduce প্রোগ্রামে ডেটা প্রসেসিংয়ের জন্য Input Format এবং Output Format খুবই গুরুত্বপূর্ণ। এগুলো নির্ধারণ করে ডেটা কীভাবে পড়া হবে এবং কীভাবে আউটপুট ডেটা সংরক্ষণ করা হবে।
Input Format (ইনপুট ফরম্যাট)
Input Format মূলত ডেটার উৎস থেকে Map টাস্কে ডেটা কীভাবে পাঠানো হবে তা নির্ধারণ করে। এটি ইনপুট ডেটাকে স্প্লিট (Split) এবং কী-ভ্যালু পেয়ারে রূপান্তরিত করে।
বিভিন্ন ধরনের Input Format
1. TextInputFormat
- এটি ডিফল্ট Input Format।
- ইনপুট ডেটা লাইন-বাই-লাইন পড়া হয়।
- প্রতিটি লাইন একটি কী-ভ্যালু পেয়ার তৈরি করে।
- Key: লাইনটির অফসেট (Offset)।
- Value: লাইনটির টেক্সট।
উদাহরণ:
ইনপুট ডেটা:
Hello Hadoop
Hello World
Output কী-ভ্যালু পেয়ার:
(0, "Hello Hadoop")
(1, "Hello World")
2. KeyValueTextInputFormat
- এটি কী-ভ্যালু পেয়ার হিসেবে ইনপুট ডেটা পড়ে।
- ডেটার একটি ডিলিমিটার (Delimiter) ব্যবহার করা হয়, যেমন ট্যাব বা স্পেস।
উদাহরণ:
ইনপুট ডেটা:
word1 5
word2 10
Output কী-ভ্যালু পেয়ার:
("word1", 5)
("word2", 10)
3. SequenceFileInputFormat
- এটি বাইনারি ফাইল থেকে কী-ভ্যালু পেয়ার ইনপুট হিসেবে পড়ে।
- বড় ডেটাসেটের জন্য দ্রুত কাজ করে।
4. NLineInputFormat
- এটি প্রতিটি ইনপুট স্প্লিটে N সংখ্যক লাইন পড়ে।
- এটি লাইন সংখ্যা ভিত্তিক স্প্লিটিং করে।
উদাহরণ:
N = 2 হলে ইনপুট ডেটা:
Line1
Line2
Line3
Line4
Output স্প্লিট:
Split1: (0, "Line1\nLine2")
Split2: (1, "Line3\nLine4")
Output Format (আউটপুট ফরম্যাট)
Output Format নির্ধারণ করে কীভাবে রিডিউস (Reduce) আউটপুটকে সংরক্ষণ করা হবে।
বিভিন্ন ধরনের Output Format
1. TextOutputFormat
- এটি ডিফল্ট Output Format।
- কী-ভ্যালু পেয়ার টেক্সট আকারে সংরক্ষণ করা হয়।
উদাহরণ:
আউটপুট:
Hello 2
Hadoop 1
World 1
2. SequenceFileOutputFormat
- এটি বাইনারি ফরম্যাটে কী-ভ্যালু পেয়ার সংরক্ষণ করে।
- বড় আকারের ডেটার জন্য এটি বেশি কার্যকর।
3. MultipleOutputs
- এটি একাধিক আউটপুট ফাইল তৈরি করতে সাহায্য করে।
- উদাহরণস্বরূপ, আপনি বিভিন্ন কী অনুযায়ী আউটপুট ভাগ করতে পারেন।
4. NullOutputFormat
- কোনো আউটপুট সংরক্ষণ করা হয় না।
- এটি শুধুমাত্র প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
Input এবং Output Format-এর ব্যবহার
Input Format সেট করা
MapReduce কোডে Input Format সেট করতে হয়:
job.setInputFormatClass(TextInputFormat.class);
Output Format সেট করা
Output Format নির্ধারণ করতে হয়:
job.setOutputFormatClass(TextOutputFormat.class);
সারাংশ
MapReduce প্রোগ্রামের Input Format ইনপুট ডেটাকে কীভাবে স্প্লিট এবং কী-ভ্যালু পেয়ারে রূপান্তর করবে তা নির্ধারণ করে। অন্যদিকে, Output Format চূড়ান্ত ফলাফল কীভাবে সংরক্ষণ করা হবে তা ঠিক করে। TextInputFormat এবং TextOutputFormat ডিফল্ট হিসেবে ব্যবহৃত হলেও অন্যান্য ফরম্যাট যেমন KeyValueTextInputFormat, SequenceFileInputFormat এবং MultipleOutputs বিভিন্ন প্রসেসিং প্রয়োজন অনুযায়ী ব্যবহার করা হয়।
Read more