我正在使用sc.textFile()从Alluxio中获取数据,但它是spark RDD。我的程序进一步将此spark RDD用作Mahout DRM,因此我需要将RDD转换为DRM。因此,我的当前代码保持稳定。
我正在使用sc.textFile()从Alluxio中获取数据,但它是spark RDD。我的程序进一步将此spark RDD用作Mahout DRM,因此我需要将RDD转换为DRM。因此,我的当前代码保持稳定。
可以按照以下步骤从Apache Spark RDD创建Apache Mahout DRM:
(Long, Vector)
的形式)考虑以下示例代码:
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)
来源/更多信息/无耻的自我推销(向下滚动):我的博客
IndexedDatasetSpark
的对象,它在BiMaps
(实际上是BiDictionaries
)中保留了ID,但也创建了一个Mahout DRM。好处是字典将在完成数学运算后将行和列的整数转换回您的ID。如果您有一个元素为矩阵的RDD [String,String],则会进行此转换。如果您有一系列行,则可以从此开始编写自己的转换代码。