Если у меня есть следующая функция, и я хочу разделить Iterable на RDD Var1
с массивом Var2
, каков наилучший способ сделать это?
Вот моя функция:
def foo(rdds: RDD[(ID, Iterable[(Var1,Var2)])]) : RDD[(Var1,Array[Var2])] = {
rdds.map(x => (x._2.map(it => it._1).asInstanceOf[Var1], (x._2.map(it => it._2).toArray)))
}
А вот мой пример входных данных:
//RDD[(ID, Iterable[(Var1,Var2)...])]
RDD[("ID1",Iterable[(1,4),(1,8),(1,15)])],
RDD[("ID2",Iterable[(2,18),(2,29)])]
И я хочу, чтобы вывод выглядел так:
//RDD[(Var1,Array[Var2])]
RDD[1,(4,8,15)],
RDD[2,(18,29)]
А пока мой вышекод работает.Кажется, что нет необходимости проходить x._2
дважды, чтобы получить обе части Iterable, и мне не нравится, как я должен явно выполнять преобразование asInstanceOf[Var1]
, чтобы изменить тип Iterable.
Есть ли лучший способ извлечь элементы из Iterable и поместить их в новый RDD, сгруппированный по Var1
?