Основное отличие состоит в том, что 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-приложениями.