在构建时从scala案例类生成avsc avro模式
我想从scala案例类生成一个avro模式 假设我有以下scala案例类:在构建时从scala案例类生成avsc avro模式,scala,avro,avro-tools,avro4s,Scala,Avro,Avro Tools,Avro4s,我想从scala案例类生成一个avro模式 假设我有以下scala案例类: case类用户(名称:String,收藏夹编号:Int,收藏夹颜色:String) 相关的avro模式为: {"namespace": "example.avro", "type": "record", "name": "User", "fields": [ {"name": "name", "type": "string"}, {"name": "favorite_number", "typ
case类用户(名称:String,收藏夹编号:Int,收藏夹颜色: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为例?
我看到了从avro模式构建scala类的许可,但我需要做相反的事情
提前感谢您的帮助
Avro4s
包含从案例类
生成Avro架构的逻辑
以项目为例:
import com.sksamuel.avro4s.AvroSchema
案例类用户(名称:字符串,收藏夹编号:Int,收藏夹颜色:字符串)
val userSchema=AvroSchema[User]
如果需要的话,希望这足以让你开始一项
sbt
任务。你可以使用泛型派生编写你自己的,完全可以做到。。。但是,一开始并不容易,因为你需要学习很多东西,这可能会帮助你开始_免责声明:我以前从未做过类似的事情(尽管我很快就要做),因此,我无法帮助你-但我知道这可以通过这种方式完成。以前从未做过,你有这样的例子吗?正如我所说,我也没有做过,所以我没有任何玩具的例子。。。然而,我知道Shapeless可以提供case类的自动派生,但我不确定这是否是一个好的开始。在本书中,他们使用HList
为产品类型提供了一个类似于您所需的列表。感谢您的回答。我试试看,你说得对!我从未写过sbt任务。我会做一些记录并让你知道。谢谢如何通过添加sbt任务来存储avsc模式?我只找到了hello world之类的简单例子。是否可以在build.sbt中执行此操作?