1

我正在研究RDD,我被困在如何通过循环技术遍历单个元组中的列。例如,类似于以下的任何内容:

def doSomething(rdd: RDD[(Int, Int, Int)], col: Int) = {
     for(i <- 0 until col) {
         val count = rdd.map(f => f._i).count //how to use 'i' to iterate?
     }
}

虽然这是一个无用的例子,但我想实现这个功能。

4

1 回答 1

2

您可以使用 productElement 通过索引访问元组

val t = (1, 2, 3)
t.productElement(0) == t._1

这是 scala.Product3 的实现:

override def productElement(n: Int) = n match {
   case 0 => _1
   case 1 => _2
   case 2 => _3
   case _ => throw new IndexOutOfBoundsException(n.toString())
}

所以你应该更新你的代码如下:

def doSomething(rdd: RDD[(Int, Int, Int)], col: Int) = {
    for(i <- 0 until col) {
        val count = rdd.map(f => f.productElement(i)).count //this is how you use 'i' 
    }
}
于 2014-09-25T13:01:36.383 回答