Scalding:解析具有不同属性的嵌套JSON文件

时间:2015-02-23 15:36:55

标签: json scala parsing scalding

我有一个嵌套的JSON文件,其中每个记录可能在嵌套部分中包含一组不同的字段。 fiel看起来像这样,虽然这真的是avro版本:

{"type":"record",
 "name":"features",
 "namespace":"OurCode",
 "fields":[{"name":"key","type":"long"},
       {"name":"features",
        "type":{"type":"map","values":"double"}}]
}

第二个字段“features”是一个嵌套字段,其中包含多个字段,每个记录包含一组可能不同的嵌套字段。

所以,如果我有2条看起来像这样的记录:

key1: 123   features:{var1=4, var2 = 3, var4 = 10}
key2: 456   features:{var3 = 15, var4 = 9, var5 = 22}

我需要将上述数据转换为:

Key     Var1   Var2   Var3   Var4   Var5
123       1      3     0      10     0
456       0      0     15      9     22

当我使用以下内容读取文件时,我可以手动提取字段:

JsonLine(args("input"), ('acct_id, Symbol("features.Var1"). Symbol("features.Var2), ...)
  .read

我想要一些更通用的代码,并且可以弄清楚所有子字段是什么,而我不必明确声明它们中的每一个。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

JsonLine没有您正在寻找的那种功能,我已经阅读了源代码和示例,但无法找到类似的东西。

事实上,我过去几天也在同一个方面进行探索,并且找不到任何好的json解析器。 JsonLine很乏味,但工作出色。