【问题标题】:Iterate columns in RDD迭代 RDD 中的列
【发布时间】:2014-11-20 03:32:22
【问题描述】:

我正在研究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?
     }
}

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

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案1】:

    您可以使用 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' 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2015-06-14
      • 1970-01-01
      • 2017-06-15
      • 2016-09-26
      • 2016-12-13
      相关资源
      最近更新 更多