1
我在加载数据时使用apache spark在csv文件上应用相关性我有义务跳过第一行作为数据集中列的标题,否则我无法加载数据。向Spark中的相关矩阵添加标头
我得到了相关性计算,但是当我得到相关矩阵时,我无法将列名作为头添加到新矩阵中。如何获得带有标题的矩阵?这是我曾尝试:
import org.apache.spark.mllib.linalg.{ Vector, Vectors }
import org.apache.spark.mllib.stat.Statistics
import org.apache.spark.mllib.linalg.Matrix
import org.apache.spark.rdd.RDD
val data = sc.textFile(strfilePath).mapPartitionsWithIndex {
case (index, iterator) => if (index == 0) iterator.drop(1) else iterator
}
val inputMatrix = data.map { line =>
val values = line.split(",").map(_.toDouble)
Vectors.dense(values)
}
val correlationMatrix = Statistics.corr(inputMatrix, "pearson")
你是说,我需要加载数据作为数据框,如果我想操纵列? –
@MaherHTB你不需要,但它更容易,因为所有的列根据你的标题名称。然而,另一种方法是使用当前的方法,并使用'Source.fromFile(filename).getLines.head'单独从文件中单独读取头文件。 – Shaido
我问过你,因为将Dataframe保存为csv文件的事实比将RDD [Vector]或矩阵保存在csv文件中花费的时间要多得多。请告诉我如何更新代码以获取相关矩阵如果我使用第二种方法,非常感谢 –