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
int, string, double
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
Ö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