2016-07-11 8 views
0

で読む:[圧縮複数の列は、私はCSVファイルに次のようなデータを持っているスパークCSV

ColumnA,1,2,3,2,1 
"YYY",242,34234,232,322,432 
"ZZZ",16,435,363,3453,3434 

私はhttps://github.com/databricks/spark-csv

でそれを読みたい、私はデータフレームにこれを読んで、凝縮したいと思います最初の列を除くすべての列はSeqになります。

だから私はそれから、このような何かを得るしたいと思います:

MyCaseClass("YYY", Seq(242,34234,232,322,432)) 
MyCaseClass("ZZZ", Seq(16,435,363,3453,3434)) 

私はそれを取得するかどうかはわかりません。

val rawData = sqlContext.read 
    .format("com.databricks.spark.csv") 
    .option("header", "true") 
    .option("inferSchema", "true") 
    .load(url) 

はその後、私は私がしたい値にそれをマッピングしています:

は、私は、URLがファイルの場所がどこにあるか、次のように読んでみました。

問題は、私はエラーを取得することです:

The header contains a duplicate entry: '1' 

それでは、どのように私はspark-csvを使用してSeqに最初を除くすべてのフィールドを凝縮することができますか?

EDIT

私は入力の形式を変更することはできません。

+0

:だから、あなたは次のように行うことができます。最初にそれを修正してから、あなたのことを実装しようとするべきです。 –

答えて

-1

行にマッピングすることで可能です。また、Pawelのコメント重複列名は許可されていません。あなたは彼らが彼らの列のための明確な名前を必要とするので、スパークのデータフレームでは許可されていない '1'という名前の2つのカラムを持つファイルをご入力CSVで

val dataFrame = yourCSV_DataFrame 

dataFrame.map{row => 
Row(row(0), Seq(row(1), row(2), row(3) ...)) 
} 
+0

入力の形式を変更できません。私はこのフォーマットに対応するために読書を変更したいと思っています。 – octavian

関連する問題