我对Spark和Scala颇为陌生,并且拥有Java背景。我已经在haskell中做了一些编程,所以对函数式编程不是全新的。使用Scala中的RDD.map()执行嵌套循环
我正试图完成某种形式的嵌套for循环。我有一个RDD,我想根据RDD中的每两个元素来操作。伪码(类似Java的)应该是这样的:
// some RDD named rdd is available before this
List list = new ArrayList();
for(int i = 0; i < rdd.length; i++){
list.add(rdd.get(i)._1);
for(int j = 0; j < rdd.length; j++){
if(rdd.get(i)._1 == rdd.get(j)._1){
list.add(rdd.get(j)._1);
}
}
}
// Then now let ._1 of the rdd be this list
我的斯卡拉解决方案(即不工作)是这样的:
val aggregatedTransactions = joinedTransactions.map(f => {
var list = List[Any](f._2._1)
val filtered = joinedTransactions.filter(t => f._1 == t._1)
for(i
list ::= i._2._1
}
(f._1