我正在研究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?
}
}
虽然这是一个无用的例子,但我想实现这个功能。
我正在研究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?
}
}
虽然这是一个无用的例子,但我想实现这个功能。
您可以使用 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'
}
}