我正在使用 sc.textFile() 从 Mahout 中的 Alluxio 获取数据,但它是 spark RDD。我的程序进一步使用这个 spark RDD 作为 Mahout DRM,因此我需要将 RDD 转换为 DRM。所以我当前的代码保持稳定。

最佳答案

可以通过以下步骤从 Apache Spark RDD 创建 Apache Mahout DRM:

  • 将RDD的每一行转换成一个Mahout Vector
  • 使用索引压缩 RDD(并交换元组的形式为 (Long, Vector)
  • 用 DRM 包裹 RDD。

  • 考虑以下示例代码:
    val rddA = sc.parallelize(Array((1.0, 2.0, 3.0),
                ( 2.0, 3.0, 4.0),
                ( 4.0, 5.0, 6.0)))
    
    val drmRddA: DrmRdd[Long] = rddA.map(a => new DenseVector(a))
                     .zipWithIndex()
                     .map(t => (t._2, t._1))
    
    val drmA = drmWrap(rdd= drmRddA)
    

    来源/更多信息/无耻的自我宣传(向底部):my Blog

    关于apache-spark - 如何将 spark RDD 转换为 mahout DRM?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43270196/

    10-14 19:17
    查看更多