В чем разница между SerializableCoder и AvroCoder? - PullRequest
0 голосов
/ 25 июня 2018

В чем разница между SerializableCoder и AvroCoder, и когда я должен использовать один над другим в настраиваемой модели данных?Со страницы документации кажется, что AvroCoder более строг в отношении схемы модели, а SerializableCoder просто нужна модель для реализации интерфейса Serializable, который по существу пуст.Документ для SerializableCoder предупредил о том, что не гарантирует детерминированную кодировку.Кроме того, в какой ситуации можно было бы выбрать AvroCoder вместо SerializableCoder?

1 Ответ

0 голосов
/ 27 октября 2018

Основное отличие состоит в том, что AvroCoder использует Avro Schemas , т.е. вы должны использовать AvroCoder только для файлов .avro.

Схема Avro создается в формате JSON, например:

{
"type" : "record",
"name" : "userInfo",
"namespace" : "my.example",
"fields" : [{"name" : "username", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "age", 
            "type" : "int", 
            "default" : -1},

            {"name" : "phone", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "housenum", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "street", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "city", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "state_province", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "country", 
            "type" : "string", 
            "default" : "NONE"},

            {"name" : "zip", 
            "type" : "string", 
            "default" : "NONE"}]
}

С другой стороны, SerializableCoder реализует Java Serializable интерфейс .Это позволяет иметь классы, предназначенные для сериализации объектов, но конкретных методов нет.

Кроме того, авро-схемы могут быть прочитаны не-Java-приложениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...