【问题标题】:Scalding: Parse nested JSON file with differing attributesScalding:解析具有不同属性的嵌套 JSON 文件
【发布时间】:2015-02-23 15:36:55
【问题描述】:

我有一个嵌套的 JSON 文件,其中每条记录的嵌套部分可能包含一组不同的字段。尽管这确实是 avro 版本,但该字段看起来像这样:

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

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

因此,如果我有 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

我想要一些更通用的代码,并且无需我显式声明每个子字段就可以弄清楚所有子字段是什么。

感谢您的帮助。

【问题讨论】:

    标签: json scala parsing scalding


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2019-03-31
      • 2020-01-18
      • 2020-08-29
      相关资源
      最近更新 更多