Apache Avro সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়া সহজ করার জন্য AvroSerializer এবং AvroDeserializer ক্লাস প্রদান করে, যেগুলো Java প্রোগ্রামিং ভাষায় Avro ডেটা হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। এগুলো Avro ডেটা ফরম্যাটে অবজেক্ট সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে সহায়তা করে।
AvroSerializer কী?
AvroSerializer ক্লাসটি ব্যবহার করে আপনি Avro ডেটাকে সিরিয়ালাইজ করতে পারেন। এটি একটি অবজেক্ট বা ডেটা ফরম্যাটকে Avro ডেটা ফরম্যাটে রূপান্তর করে। Avro সিরিয়ালাইজেশন প্রক্রিয়ায় ডেটা স্কিমা অনুযায়ী সংরক্ষিত হয়, যা পরবর্তীতে সহজে পুনঃপ্রসেস করা যায়।
AvroSerializer এর কাজ
- অবজেক্ট সিরিয়ালাইজেশন: অবজেক্টকে একটি বাইনারি ফরম্যাটে রূপান্তর করা হয়, যা কমপ্যাক্ট এবং দ্রুত স্টোর এবং ট্রান্সফার করতে সহায়ক।
- ডেটার স্কিমা সংরক্ষণ: সিরিয়ালাইজেশনের সময় ডেটার স্কিমা সাথে সঙ্গেই সংরক্ষিত হয়, যাতে ডেসিরিয়ালাইজেশন সময় ডেটার কাঠামো পুনঃপ্রক্রিয়া করা যায়।
AvroSerializer উদাহরণ
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.io.DatumWriter;
import org.apache.avro.io.DataFileWriter;
import org.apache.avro.generic.GenericDatumWriter;
import java.io.File;
import java.io.IOException;
public class AvroSerializerExample {
public static void main(String[] args) throws IOException {
// Load schema
Schema schema = new Schema.Parser().parse(new File("user_schema.avsc"));
// Create a generic record
GenericData.Record user = new GenericData.Record(schema);
user.put("name", "John Doe");
user.put("age", 30);
// Create a DatumWriter to serialize the record
DatumWriter<GenericData.Record> writer = new GenericDatumWriter<>(schema);
DataFileWriter<GenericData.Record> dataFileWriter = new DataFileWriter<>(writer);
// Write the data to a file
dataFileWriter.create(schema, new File("user_data.avro"));
dataFileWriter.append(user);
dataFileWriter.close();
}
}
এই কোডটি একটি GenericData.Record অবজেক্ট তৈরি করছে, যা user_schema.avsc স্কিমা অনুযায়ী সিরিয়ালাইজ করা হয় এবং user_data.avro ফাইলের মধ্যে সংরক্ষণ করা হয়।
AvroDeserializer কী?
AvroDeserializer ক্লাসটি ব্যবহার করে আপনি Avro ডেটাকে ডেসিরিয়ালাইজ করতে পারেন। এটি একটি বাইনারি ফরম্যাট থেকে ডেটা পুনরুদ্ধার করে এবং নির্দিষ্ট স্কিমা অনুযায়ী অবজেক্টে রূপান্তর করে। Avro ডেসিরিয়ালাইজেশন প্রক্রিয়ায় ডেটার স্কিমা অপরিবর্তিত থাকে, এবং ডেটার গঠন সঠিকভাবে পুনরুদ্ধার করা হয়।
AvroDeserializer এর কাজ
- ডেটা ডেসিরিয়ালাইজেশন: বাইনারি ফরম্যাট থেকে ডেটাকে সঠিক অবজেক্ট টাইপে রূপান্তর করা হয়।
- ডেটার স্কিমা অনুসরণ: ডেসিরিয়ালাইজেশনের সময়, Avro স্কিমা ব্যবহার করে ডেটার গঠন সঠিকভাবে পুনরুদ্ধার করা হয়, যাতে ডেটা ক্ষতিগ্রস্ত না হয়।
AvroDeserializer উদাহরণ
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.io.DatumReader;
import org.apache.avro.io.DataFileReader;
import org.apache.avro.generic.GenericDatumReader;
import java.io.File;
import java.io.IOException;
public class AvroDeserializerExample {
public static void main(String[] args) throws IOException {
// Load schema
Schema schema = new Schema.Parser().parse(new File("user_schema.avsc"));
// Create a DatumReader to deserialize the record
DatumReader<GenericData.Record> reader = new GenericDatumReader<>(schema);
DataFileReader<GenericData.Record> dataFileReader = new DataFileReader<>(new File("user_data.avro"), reader);
// Read the data and print
while (dataFileReader.hasNext()) {
GenericData.Record user = dataFileReader.next();
System.out.println("Name: " + user.get("name"));
System.out.println("Age: " + user.get("age"));
}
dataFileReader.close();
}
}
এই কোডটি user_data.avro ফাইল থেকে ডেটা ডেসিরিয়ালাইজ করছে এবং স্কিমা অনুযায়ী তা GenericData.Record অবজেক্টে রূপান্তর করছে। পরে name এবং age ফিল্ডের মান আউটপুট হিসেবে দেখাচ্ছে।
AvroSerializer এবং AvroDeserializer এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | AvroSerializer | AvroDeserializer |
|---|---|---|
| প্রয়োগ | ডেটাকে Avro ফরম্যাটে সিরিয়ালাইজ করে সংরক্ষণ করে | Avro ফরম্যাটে সংরক্ষিত ডেটাকে ডেসিরিয়ালাইজ করে অবজেক্টে রূপান্তর করে |
| কাজ | অবজেক্টকে বাইনারি ফরম্যাটে রূপান্তর করা | বাইনারি ফরম্যাট থেকে অবজেক্টে ডেটা রূপান্তর করা |
| ফলাফল | .avro ফাইল তৈরি হয় | .avro ফাইল থেকে ডেটা পড়া হয় |
| ব্যবহার | ডেটাকে সংরক্ষণ এবং ট্রান্সফার করার জন্য | ডেটাকে পুনরুদ্ধার এবং প্রসেস করার জন্য |
AvroSerializer এবং AvroDeserializer ব্যবহার করার সুবিধা
- কমপ্যাক্ট ডেটা: AvroSerializer সিরিয়ালাইজেশনের সময় ডেটাকে কমপ্যাক্ট বাইনারি ফরম্যাটে রূপান্তর করে, যা স্টোরেজ এবং ট্রান্সফারের জন্য উপযুক্ত।
- স্কিমা ভ্যালিডেশন: AvroDeserializer ডেসিরিয়ালাইজেশন সময় স্কিমা ভ্যালিডেশন করে ডেটার কাঠামো সঠিকভাবে পুনরুদ্ধার নিশ্চিত করে।
- ডিস্ট্রিবিউটেড সিস্টেমে কার্যকারিতা: Avro ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার মাধ্যমে ডিস্ট্রিবিউটেড সিস্টেমে (যেমন, Hadoop, Kafka) ডেটা সঞ্চয় এবং ট্রান্সফার সহজ হয়ে ওঠে।
- স্কিমা ইভোলিউশন: Avro এর স্কিমা ইভোলিউশন সাপোর্ট রয়েছে, যার মাধ্যমে স্কিমায় পরিবর্তন আসলেও ডেটার মান সঠিকভাবে ডেসিরিয়ালাইজ করা সম্ভব হয়।
সারাংশ
AvroSerializer এবং AvroDeserializer ক্লাসগুলি Java প্রোগ্রামিং ভাষায় Avro ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়া সহজ করে। AvroSerializer অবজেক্টকে Avro ফরম্যাটে রূপান্তর করে সংরক্ষণ করে, আর AvroDeserializer বাইনারি ফরম্যাট থেকে ডেটা পুনরুদ্ধার করে এবং সঠিক কাঠামোয় রূপান্তর করে। এই দুটি ক্লাস ডেটা স্টোরেজ, ট্রান্সফার এবং প্রসেসিংকে সহজ এবং কার্যকরী করে তোলে।
Read more