【发布时间】:2019-06-26 16:31:27
【问题描述】:
如果我有以下函数,并且我想将 Iterable 拆分为 Var1 的 RDD 和 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 中提取元素并将它们放入由Var1 分组的新 RDD 中?
【问题讨论】:
-
愿意评论/接受我的回答吗? @EliSquared