I have a file, which each line is one json record
I run the following
val env = ExecutionEnvironment.getExecutionEnvironment
val data = env.readTextFile("file:///somefile"<file:///somefile%22>)
.map(line => JSON.parseFull(line))
and get the following for one json record. For simplicity, the keys and values
are modified, and not all keys and values are shown.
Some(Map(a->1, b->2, c->3, d->Map(e->5, f->6, g->7))
How do I create a new data set from selected keys values from this data set?
E.g. Map(a -> 1, b -> 2, e -> 5, f -> 6)
To do the equivalent of the following.
scala> val m = Map('a'->1, 'b'->2, 'c'->3, 'd'->Map('e'->5, 'f'->6, 'g'->7))
m: scala.collection.immutable.Map[Char,Any] = Map(a -> 1, b -> 2, c -> 3, d ->
Map(e -> 5, f -> 6, g -> 7))
scala> val s1 = Set('a', 'b')
s1: scala.collection.immutable.Set[Char] = Set(a, b)
scala> val x1 = m.filterKeys { s1.contains(_) }
x1: scala.collection.immutable.Map[Char,Any] = Map(a -> 1, b -> 2)
scala> val n = m('d').asInstanceOf[Map[Char,Any]]
p: Map[Char,Any] = Map(e -> 5, f -> 6, g -> 7)
scala> val s2 = Set('e', 'f')
s2: scala.collection.immutable.Set[Char] = Set(e, f)
scala> val x2 = n.filterKeys { s2.contains(_) }
x2: scala.collection.immutable.Map[Char,Any] = Map(e -> 5, f -> 6)
scala> x1 ++ x2
res28: scala.collection.immutable.Map[Char,Any] = Map(a -> 1, b -> 2, e -> 5, f
-> 6)
Thanks
Pauline