Sunday, May 14, 2023

Avro - avsc Uzantılı Avro Schema Dosyaları

Giriş
Açıklaması şöyle
Apache Avro is an open-source serialization format like google protobuf and apache thrift for record data and one of the better choices for stream data.

One of the critical features of Avro is the ability to define a schema for the data being exchanged between systems.
Şeklen JSON'a çok benziyor. Açıklaması şöyle
AVSC (Avro Schema) files are JSON files that define the schema for an Avro data structure.
Avro dosyalarından Java kodu üretmek için avro-maven-plugin kullanılabilir

1. İlk başta
type : record olur
name : Sınıfın ismi
namespace : Paket ismi
belirtilir

2. Daha sonra fields belirtilir. Field type olarak
intstringdouble
verilebilir. 
Alanın Java'da hangi sınıf olacağı isteğe bağlı olarak belirtilebilir. 
Eğer alan null olabiliyorsa  "type" : [ "null", "string" ] şeklinde belirtilir

avsc Uzantılı Avro Schema Dosyaları
Örnek
Şöyledir. Burada  doc alanı ile de sınıf ve alanlar için açıklamalar yazılmış
{
  "type" : "record",
  "name" : "FullName",
  "namespace" : "com.example",
  "doc" : "A Full Name Schema",
  "fields" : [ 
    {
      "name" : "first",
      "type" : "string",
      "doc" : "specifies the first name",
    },
    {
      "name" : "last",
      "type" : "string",
    }
  ]
}
Örnek
{
  "type" : "record",
  "name" : "Person",
  "namespace" : "org.example.models",
  "fields" : [ {
    "name" : "age",
    "type" : {
      "type" : "int",
      "java-class" : "java.lang.Integer"
    }
  }, {
    "name" : "firstName",
    "type" : [ "null", "string" ]
  }, {
    "name" : "lastName",
    "type" : [ "null", "string" ]
  } ]
}
Örnek
{
  "type" : "record",
  "name" : "SaleEvent",
  "namespace" : "com.example.kafkaexample.model",
  "fields" : [ {
    "name" : "itemId",
    "type" : {
      "type" : "int",
      "java-class" : "java.lang.Integer"
    }
  }, {
    "name" : "quantity",
    "type" : {
      "type" : "int",
      "java-class" : "java.lang.Integer"
    }
  }, {
    "name" : "saleDate",
    "type" : [ "null", "string" ]
  }, {
    "name" : "sellerID",
    "type" : [ "null", "string" ]
  }, {
    "name" : "unitPrice",
    "type" : {
      "type" : "double",
      "java-class" : "java.lang.Double"
    }
  } ]
}



No comments:

Post a Comment

kafka-consumer-groups.sh komutu

Giriş Bir topic'i dinleyen consumer'ları gösterir. Aynı topic'i dinleyen consumer group'ları olabilir. Her topic farklı part...