为了便于在Scala中使用Avro,我想基于存储在.avro文件中的模式来定义案例类。我可以试试:
谢谢,任何建议表示赞赏。 -Julian
答案 0 :(得分:14)
我一直在攻击一个名为Scalavro的小项目,以另一种方式(Scala类型为Avro架构)。它还为您提供直接二进制I / O.
简单示例:
package com.gensler.scalavro.tests
import com.gensler.scalavro.types.AvroType
case class Person(name: String, age: Int)
val personAvroType = AvroType[Person]
personAvroType.schema
产生:
{
"name": "Person",
"type": "record",
"fields": [
{"name": "name", "type": "string"},
{"name": "age", "type": "int"}
],
"namespace": "com.gensler.scalavro.tests"
}
项目网站(上面已链接)和最新规范中还有更多示例。
我计划在不久的将来在Sonatype OSS上托管二进制文件,但是现在你可以从github和sbt publish-local
获取源代码,如果你想尝试一下。
<强>更新强>
Scalavro 现在可以在Maven Central上使用。
答案 1 :(得分:3)
看起来你在https://github.com/julianpeeters/avro-scala-macro-annotations
的类型提供商那里弄得很脏