我需要阅读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]类型的证据参数的隐含值,其中,文件读取器是正在读取数据的类的名称英寸
最终,我需要将上述数据转换为以下内容:
Var1 Var2 Var3 Var4 Var5
Key1 1 3 0 10 0
Key2 0 0 15 9 22
因此,如果有更好的方法可以做到这一点,那也可以。
对烫伤或avro文件不是很有经验,所以对此有任何帮助表示赞赏。让我知道我可能需要提供的其他信息。
感谢。