我有一个嵌套的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我想要一些更通用的代码,可以弄清楚所有的子字段是什么,而不需要我显式地声明每个子字段。
谢谢你的帮助。
发布于 2015-02-24 10:34:37
JsonLine没有你想要的那种功能,我读过那里的源代码和示例,但找不到这样的功能。
事实上,在过去的几天里,我也在同一方面进行了探索,但找不到任何好的json解析器。JsonLine很单调乏味,但工作做得很好。
https://stackoverflow.com/questions/28677397
复制相似问题