我正在研究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?
}
}
虽然这是一个无用的例子,但我想实现这个功能。
答案 0 :(得分: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'
}
}