将标头添加到Spark中的关联矩阵

时间:2017-06-01 07:48:53

标签: scala csv apache-spark apache-spark-mllib

我正在使用apache spark在csv文件上应用相关性,在加载数据时我不得不跳过第一行作为标题,这是数据集中的列,否则我无法加载数据。

我得到了相关性,但是当我得到相关矩阵时,我无法在新矩阵中添加列名作为标题。如何获得带有标题的矩阵?这就是我的尝试:

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")

1 个答案:

答案 0 :(得分:1)

在Spark 2.0+中,您可以使用以下命令将csv文件加载到数据框中:

val df = spark.read.option("header", "true").option("inferSchema", "true").csv("filePath")

然后可以使用

计算不同列之间的相关性
df.stat.corr("col1", "col2", "pearson")