从JSON模式文件创建AVRO模式

时间:2016-04-18 09:18:34

标签: json avro avro4s

我有JSON文件&要将JSON模式解析为AVRO模式。我有点困惑,我是否必须使用AVRO文档中定义的数据类型编写手动AVRO模式。

或者是否有任何自动方法/功能/程序可以完全按照要求工作?

2 个答案:

答案 0 :(得分:2)

嗯,你可以尝试https://github.com/fge/json-schema-avro,但他们说它仍然不完整。所以不确定它会起作用,不过

答案 1 :(得分:1)

avro4s在编译时从案例类派生模式:

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"
  } ]
}