2017-06-01 20 views
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") 

答えて

1

を2.0+コマンドを使用してデータフレームにcsvファイルを読み込むことができます:

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

異なる列間の相関関係は、その後

で計算することができ、私が試してみました何これ
df.stat.corr("col1", "col2", "pearson") 
+0

私は列を操作したい場合、データフレームとしてデータをロードする必要があることを意味しますか? –

+0

@MaherHTBあなたの頭に合わせてすべての列に名前が付けられているので、簡単です。しかし、代わりに、現在のアプローチを使い、 'Source.fromFile(filename).getLines.head'を使ってファイルからヘッダを読みとるだけです。 – Shaido

+0

Dataframeをcsvファイルに保存するという事実は、RDD [Vector]や行列をcsvファイルに保存するよりも時間がかかってしまったので、尋ねました。コードを更新して相関行列を得る方法を教えてくださいヘッダーを2番目の方法を使用する場合、多くの感謝 –

関連する問題