I have 2 datasets which I group by key
val stgDS = Seq(("1", "1"), ("1", "2"), ("1", "3"), ("1", "4"), ("1", "5"), ("2", "1"), ("2", "2"), ("2", "3"), ("2", "4"), ("2", "5"))
.toDF("number", "time")
.as[Stg]
val aggDS = Seq(("1", "1"), ("1", "4"), ("1", "8"), ("2", "2"), ("2", "5"))
.toDF("number", "time")
.as[Agg]
After that I can apply a function to each value like so
stgDS.groupByKey(_.number)
.flatMapGroups{case(k, iterator) => somefunction(iterator)}
How can I combine
stgDS.groupByKey(_.number)
aggDS.groupByKey(_.number)
to get something like
(k, (iteratorStg, iteratorAgg))
to then perform
.flatMapGroups{case(k, (iteratorStg, iteratorAgg)) => somefunction(iteratorStg, iteratorAgg)}
I'm looking at combineByKey finction, but either it's just another variant of grouping or I don't get how it works.
A simple join wouldn't do, because I want to loop over these iterators separately.