我有一个JSON文件和JSON Schema需要解析成AVRO Schema。我有点困惑,是不是必须使用AVRO文档中定义的数据类型手动编写AVRO schema。
还是说有任何自动化的方法/函数/程序可以完全按照要求工作?
还是说有任何自动化的方法/函数/程序可以完全按照要求工作?
avro4s
可以在编译时从 case 类中生成 schema:
import com.sksamuel.avro4s.SchemaFor
object Avro {
case class MyAvroClass(s: String, i: Int)
def main(args: Array[String]): Unit = {
val avroSchema = SchemaFor[MyAvroClass]()
println(avroSchema.toString(true))
}
}
产生:
{
"type" : "record",
"name" : "MyAvroClass",
"namespace" : "tests",
"fields" : [ {
"name" : "s",
"type" : "string"
}, {
"name" : "i",
"type" : "int"
} ]
}