【发布时间】: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