【发布时间】:2013-03-14 11:25:02
【问题描述】:
为了便于在 Scala 中使用 Avro,我想根据存储在 .avro 文件中的模式定义一个案例类。我可以试试:
- 手动编写 .scala 案例类定义。
- 以编程方式将字符串写入 .scala 文件
- 使用字节码库欺骗案例类定义,例如 ObjectWeb 的 ASM
- 具体的编译器技巧?
- 在运行时修改现有案例分类定义?
谢谢,感谢任何建议。 -朱利安
【问题讨论】:
标签: scala schema case-class avro
为了便于在 Scala 中使用 Avro,我想根据存储在 .avro 文件中的模式定义一个案例类。我可以试试:
谢谢,感谢任何建议。 -朱利安
【问题讨论】:
标签: scala schema case-class avro
【讨论】:
我一直在破解一个名为 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 上可用。
【讨论】: