在构建时从scala case类生成avsc avro模式

时间:2019-01-31 15:02:42

标签: scala avro avro-tools avro4s

我想从scala case类生成一个avro模式。

假设我有以下scala case类:

case class User(name : String, favorite_number: Int, favorite_color: String)

相关的avro模式为:

{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": "int"},
     {"name": "favorite_color", "type": "string"}
 ]
}

有没有一种方法可以在构建时生成avro scehma?例如使用sbt吗? 我看到sbt-avro4s允许从avro模式中构建scala类,但我需要做相反的事情。

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

Avro4s包含根据case class生成Avro模式的逻辑。

https://github.com/sksamuel/avro4s#schemas

以下为项目示例:

import com.sksamuel.avro4s.AvroSchema

case class User(name : String, favorite_number: Int, favorite_color: String)
val userSchema = AvroSchema[User]

希望可以提供足够的资源来开始执行sbt任务。