我有这些数据:
val data = List(Map(event_id -> ABC, event_name -> visited, timestamp -> 1478187513, member_id -> 111, category -> web, field1 -> abc),
Map(event_id -> DEF, event_name -> added, timestamp -> 1478187520, member_id -> 111),
Map(event_id -> ABC, event_name -> visited, timestamp -> 1478187522, member_id -> 111, category -> web, field1 -> abc),
Map(event_id -> ABC, timestamp -> 1478187618, member_id -> 111, category -> web, field1 -> abc))
我想提取最频繁的event_name
。在这种情况下,它应该是visited
。但是,必须考虑到List
的所有条目都不具有字段event_name
。我该怎么办?
如果我需要提取任何event_name
,那么这是有效的。但它并没有给我最常见的一个:
val event_name = data.collect{
case map if map.keySet.contains("event_name") => map("event_name")
}.headOption.getOrElse("")
我也编写了这段代码,但并不认为某些条目可能没有event_name
:
val event_name = data.map(l=>l("event_name")).groupBy(identity).maxBy(_._2.size)._1