为了方便在Scala中使用Avro,我想定义一个基于与.avro文件一起存储的模式的案例类。我可以尝试:我可以从Avro模式定义中获得Scala案例类定义吗?
- 手写一个.scala案例类的定义。
- 编程字符串写入到文件.scala
- 欺骗的情况下类定义了字节码库像 ObjectWeb的ASM
- SpecificCompiler花样?
- 在运行时修改现有的案例分类定义?
谢谢,任何意见表示赞赏。 -Julian
为了方便在Scala中使用Avro,我想定义一个基于与.avro文件一起存储的模式的案例类。我可以尝试:我可以从Avro模式定义中获得Scala案例类定义吗?
谢谢,任何意见表示赞赏。 -Julian
我一直在黑客一个名为Scalavro的小项目去其他方式(斯卡拉类型为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"
}
上有项目网站(上面链接),并在scalatest规格许多更多的例子。
我有计划在不久的将来在Sonatype OSS上托管二进制文件,但现在你可以从github和sbt publish-local
中获取源代码,如果你想试试它。
更新:
Scalavro现在Maven的中央可用。
很不错的了你的手脏有型供应商。保持良好的工作。你考虑把它带到哪里有编译时反射版本? – 2014-03-11 17:13:34
尚未,但这将是一个真正有趣的项目。想帮忙吗? – 2014-03-12 04:55:49
注意:我不确定scala宏将来能够生成一个类型 – 2015-01-26 15:50:48