7

I have the JSON file & JSON Schema to be parsed into the AVRO Schema. I am little bit confused, do i have to write the manual AVRO schema using the data types defined in AVRO documentation.

Or is there any automated method / function / program that can work exactly the same as required ?

user2857762
  • 81
  • 1
  • 4

2 Answers2

4

Well, you can try https://github.com/fge/json-schema-avro, but they say it is still not complete. So not sure it will work, though

RadioLog
  • 582
  • 1
  • 4
  • 20
3

avro4s derives schemas at compile time from case classes:

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))
  }
}

Yields:

{
  "type" : "record",
  "name" : "MyAvroClass",
  "namespace" : "tests",
  "fields" : [ {
    "name" : "s",
    "type" : "string"
  }, {
    "name" : "i",
    "type" : "int"
  } ]
}
Yuval Itzchakov
  • 146,575
  • 32
  • 257
  • 321