3

我需要在 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 文件不是很有经验,因此感谢您提供任何帮助。让我知道我可能需要提供哪些其他信息。

谢谢。

4

0 回答 0