我有一些 JSON 输入需要解析和处理(这是我第一次使用 JSON)。我的输入如下:
{"id":"id2","v":2, "d":{"Location":"JPN"})
{"id":"id1","v":1, "d":{"Location":"USA"}}
{"id":"id2","v":1, "d":{"Location":"JPN"}}
{"id":"id1","v":2, "d":{"Location":"USA"}}
我的目标是编写一个烫伤脚本,按位置字段对输入进行分组并输出计数。所以在上面的例子中,“JPN”和“USA”的计数应该是 2。Scalding 提供了一个名为 JsonLine 的类。我的脚本如下:
class ParseJsonLine(args: Args) extends Job(args) {
JsonLine(args("input"), ('id, 'v, 'd)).read
.groupBy('d){_.size}
.write(args("output"))
}
上面的代码编译正常,但是在运行时会产生如下错误:
Caused by: java.lang.ClassCastException: scala.collection.immutable.Map$Map1 cannot be cast to java.lang.Comparable
基本上,我不确定如何引用 Location 字段。“d.Location”不起作用,按复杂结构“d”进行分组会产生上述错误。我没有找到太多在烫伤中使用 json 进行嵌套输入解析的示例。另外,我不确定嵌套输入是否有比 JsonLine 更好的东西。
我会很感激你的帮助。
谢谢