Avro এবং JSON এর মধ্যে Interoperability

Avro এবং REST API Integration - অ্যাপাচি অভ্র (Avro) - Big Data and Analytics

361

Apache Avro এবং JSON দুটি অত্যন্ত জনপ্রিয় ডেটা ফরম্যাট, কিন্তু তাদের কার্যকারিতা এবং ব্যবহারের ক্ষেত্রে কিছু পার্থক্য রয়েছে। যদিও JSON একটি সহজ এবং পঠনযোগ্য ফরম্যাট, Avro একটি বাইনারি সিরিয়ালাইজেশন ফরম্যাট যা আরও কার্যকরী এবং স্কিমা ভিত্তিক। তবে, অনেক পরিস্থিতিতে Avro এবং JSON-এর মধ্যে interoperability বা পারস্পরিক কাজকর্মের প্রয়োজন হতে পারে, যেমন ডেটা আদান-প্রদান বা ডেটা স্টোরেজের ক্ষেত্রে।

Avro এবং JSON-এর মধ্যে interoperability নিশ্চিত করতে, আপনি Avro ডেটাকে JSON ফরম্যাটে কনভার্ট করতে পারেন এবং JSON ডেটাকে Avro ফরম্যাটে রূপান্তরিত করতে পারেন। এভাবে দুইটি ফরম্যাটের মধ্যে সঠিক ডেটা এক্সচেঞ্জ করা সম্ভব হয়।


Avro এবং JSON এর মধ্যে Interoperability এর জন্য কী প্রয়োজন?

Avro এবং JSON-এর মধ্যে interoperability কার্যকরী করতে কিছু গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে:

  1. ডেটা স্কিমা: Avro স্কিমা ভিত্তিক ডেটা ফরম্যাট ব্যবহার করে, যেখানে JSON কোনো নির্দিষ্ট স্কিমা ছাড়াই ডেটা ধারণ করে। এজন্য, JSON থেকে Avro ফরম্যাটে রূপান্তর করার জন্য একটি নির্দিষ্ট স্কিমা প্রয়োজন।
  2. ডেটা কনভার্সন: JSON থেকে Avro এবং Avro থেকে JSON কনভার্ট করার জন্য কিছু টুল বা লাইব্রেরি ব্যবহার করা যেতে পারে, যেমন Avro মডিউল যা JSON ডেটাকে Avro স্কিমার ভিত্তিতে রূপান্তর করতে সক্ষম।

Avro থেকে JSON এবং JSON থেকে Avro কনভার্ট করার পদ্ধতি

Avro এবং JSON-এর মধ্যে কনভার্সন করার জন্য সাধারণত Java বা Python ব্যবহার করা হয়। নিচে কিছু উদাহরণ দেওয়া হলো যা Avro থেকে JSON এবং JSON থেকে Avro কনভার্ট করতে সহায়তা করবে।


Avro থেকে JSON কনভার্ট করা

Avro থেকে JSON কনভার্ট করার জন্য Avro স্কিমা এবং ডেটার সাহায্যে একটি DatumReader ব্যবহার করতে হবে। প্রথমে Avro ডেটা বাইনারি ফরম্যাটে থাকতে হবে, তারপর এটি JSON ফরম্যাটে রূপান্তরিত করা যাবে।

import org.apache.avro.Schema;
import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericData;
import org.apache.avro.io.Decoder;
import org.apache.avro.io.BinaryDecoder;
import org.apache.avro.io.Encoder;
import org.apache.avro.io.JsonEncoder;
import org.apache.avro.io.DatumReader;
import org.apache.avro.io.DataFileReader;
import org.apache.avro.file.DataFileReader;
import org.apache.avro.generic.GenericRecord;

import java.io.File;
import java.io.IOException;

public class AvroToJson {
    public static void main(String[] args) throws IOException {
        // Load schema
        Schema schema = new Schema.Parser().parse(new File("user_schema.avsc"));
        
        // Set up reader for Avro file
        DatumReader<GenericRecord> reader = new GenericDatumReader<>(schema);
        DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(new File("user_data.avro"), reader);
        
        // JSON encoder
        JsonEncoder jsonEncoder = new JsonEncoder(schema, System.out);
        
        while (dataFileReader.hasNext()) {
            GenericRecord record = dataFileReader.next();
            jsonEncoder.write(record);
        }
        
        dataFileReader.close();
    }
}

এই কোডটি Avro ডেটা ফাইল থেকে JSON আউটপুট তৈরি করবে।


JSON থেকে Avro কনভার্ট করা

JSON থেকে Avro কনভার্ট করার জন্য আপনাকে একটি DatumWriter এবং Avro schema ব্যবহার করে JSON ডেটা ফরম্যাটে থাকা ডেটাকে Avro ফরম্যাটে রূপান্তর করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:

import org.apache.avro.Schema;
import org.apache.avro.generic.GenericDatumWriter;
import org.apache.avro.generic.GenericData;
import org.apache.avro.io.DatumWriter;
import org.apache.avro.io.DataFileWriter;
import org.apache.avro.io.Encoder;
import org.apache.avro.io.JsonDecoder;

import java.io.File;
import java.io.IOException;

public class JsonToAvro {
    public static void main(String[] args) throws IOException {
        // Load schema
        Schema schema = new Schema.Parser().parse(new File("user_schema.avsc"));
        
        // Read JSON string
        String jsonString = "{\"name\": \"John\", \"age\": 30}";
        
        // JSON decoder to convert JSON to Avro record
        JsonDecoder decoder = new JsonDecoder(schema, jsonString);
        GenericDatumReader<GenericData.Record> reader = new GenericDatumReader<>(schema);
        
        // Avro writer to write the Avro data
        DatumWriter<GenericData.Record> writer = new GenericDatumWriter<>(schema);
        DataFileWriter<GenericData.Record> dataFileWriter = new DataFileWriter<>(writer);
        dataFileWriter.create(schema, new File("output_avro_file.avro"));
        
        GenericData.Record record = reader.read(null, decoder);
        dataFileWriter.append(record);
        dataFileWriter.close();
    }
}

এই কোডটি JSON ডেটাকে Avro ফরম্যাটে রূপান্তর করবে এবং একটি Avro ফাইল তৈরি করবে।


Avro এবং JSON এর মধ্যে Interoperability এর সুবিধা

  1. স্কিমা ব্যবস্থাপনা: Avro-তে স্কিমা একটি অপরিহার্য অংশ, যা ডেটার কাঠামো নির্ধারণ করে। JSON স্কিমা ছাড়া ডেটা সংরক্ষণ করে, কিন্তু Avro এর স্কিমা ইভোলিউশন বৈশিষ্ট্য JSON ডেটার জন্যেও কার্যকরী হতে পারে।
  2. ডেটা ট্রান্সফার: Avro-তে বাইনারি ফরম্যাটে ডেটা কমপ্যাক্ট এবং দ্রুত ট্রান্সফারযোগ্য, কিন্তু JSON পঠনযোগ্য হওয়ায় এটি বিভিন্ন সিস্টেমের মধ্যে সহজে শেয়ার করা যায়। JSON এর মাধ্যমে বিভিন্ন এপ্লিকেশন বা সার্ভিসের মধ্যে ডেটা আদান-প্রদান সহজ হয়।
  3. ডেটা ইন্টিগ্রেশন: Avro এবং JSON ফরম্যাটের মধ্যে কনভার্ট করার মাধ্যমে দুইটি ভিন্ন ধরনের সিস্টেমের মধ্যে ডেটা এক্সচেঞ্জ করা সম্ভব হয়, যেমন Hadoop এবং অন্যান্য NoSQL ডেটাবেসের মধ্যে।
  4. স্কেলেবিলিটি: Avro একটি উচ্চ কার্যক্ষমতা সম্পন্ন স্কিমা-ভিত্তিক ফরম্যাট, যা JSON-এর তুলনায় আরও স্কেলেবল। Avro ব্যবহার করলে বড় আকারের ডেটা দ্রুত এবং দক্ষভাবে প্রক্রিয়া করা যায়।

সারাংশ

Avro এবং JSON-এর মধ্যে interoperability নিশ্চিত করার জন্য বিশেষ কিছু টুল এবং কৌশল রয়েছে, যার মাধ্যমে আপনি JSON ডেটাকে Avro ফরম্যাটে এবং Avro ডেটাকে JSON ফরম্যাটে কনভার্ট করতে পারবেন। এভাবে আপনি দুইটি ভিন্ন ফরম্যাটের মধ্যে ডেটা আদান-প্রদান ও সংরক্ষণ কার্যক্রম পরিচালনা করতে পারেন। Avro এর স্কিমা ইভোলিউশন ক্ষমতা এবং JSON এর পঠনযোগ্যতা, এই দুটি ফরম্যাটকে একে অপরের সঙ্গে কার্যকরভাবে কাজ করার সুযোগ দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...