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

在构建时从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

我想从scala案例类生成一个avro模式

假设我有以下scala案例类:

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中执行此操作?