我需要在 Scalding 中读取 Avro 文件,但不知道如何使用它。我使用过简单的 avro 文件,但这个文件有点复杂。架构如下所示:
{"type":"record",
"name":"features",
"namespace":"OurCode",
"fields":[{"name":"key","type":"long"},
{"name":"features",
"type":{"type":"map","values":"double"}}]
}
当第二个“字段”是一个嵌套字段,其中包含多个字段并且每条记录包含一组可能不同的嵌套字段时,不确定如何读取此数据。
我最初尝试使用 UnpackAvroSource 读取它并写入 Tsv,但我最终得到的数据如下所示:
key1 {var1=4, var2 = 3, var4 = 10}
key2 {var3 = 15, var4 = 9, var5 = 22}
还尝试创建一个案例类:
case class FileType(var key:Long, var features:Map[String,Double])
然后尝试阅读它:
PackedAvroSource[FileType](args("input"))
我收到一条错误消息:找不到 com.twitter.scalding.avro.AvroSchemaType[FileReader.this.FileType] 类型的证据参数的隐式值,其中 FileReader 是正在读取数据的类的名称。
最终,我需要将上述数据变成如下所示的内容:
Var1 Var2 Var3 Var4 Var5
Key1 1 3 0 10 0
Key2 0 0 15 9 22
因此,如果有更好的方法可以做到这一点,那也可以。
对烫伤或 avro 文件不是很有经验,因此感谢您提供任何帮助。让我知道我可能需要提供哪些其他信息。
谢谢。