2016-08-10 16 views
0

データフレームに列を追加し、ファイル名を列に挿入する方法はありますか?私は、ヘッダを削除することができたし、以下のコード使用してデータフレームに変換:DataFrame:データフレームに列を追加し、それぞれのファイル名をその列に挿入します。

を、私は以下のように2つのファイルがあります:

file1.csv: 

name:file1 
dept: hr 
id,name,age 
1,ss,34 
2,rr,35 
3,aa,44 

file2.csv: 

name:file2 
dept: hr 
id,name,age 
1,ps,34 
2,er,35 
3,qa,44 
val ofcFile = sc.wholeTextFiles("file:///root/ofc/dataset").flatMap(_._2.split("\n").drop(3)) 
case class ofc_str(id : String, name: String, age : String) 
val DF = houseFile.map(_.split(",")).map(p => ofc_str(p(0).toString,p(1).toString,p(2).toString)).toDF() 
DF.show 
+--+----+---+ 
|id|name|age| 
+--+----+---+ 
|1 | ss | 34| 
|2 | rr | 35| 
|3 | aa | 44| 
|1 | ps | 34| 
|2 | er | 35| 
|3 | qa | 44| 

をしかし、私はそこからレコードを識別することはできませんよfile私はそれを持って、どのように各レコードに対してファイル名を取得し、DFに新しい列のファイル名に挿入することができます。コメントで示唆したように

+0

を達成するのはこれが可能である.............私を助けてください! – Tangle

+0

flatMapでファイル名を削除しないでください。 – zero323

+0

@ zero323ご返信ありがとうございます! ...私はファイルのファイル名を持っています...だから私はfile_name列にデータとしてデータフレームにその行を得ることができます.......代わりにどのように私はそれを達成することができます – Tangle

答えて

0

は試してみてください。

sc.wholeTextFiles("file:///root/ofc/dataset") 
    .flatMapValues(_.split("\n").drop(3)) 
    .mapValues(p => ofc_str(p(0).toString,p(1).toString,p(2).toString)) 
    .toDF() 
+0

@LostlnOverflowお返事ありがとうございます..エラーが発生しました...-> 42:エラー:値_2はStringのメンバーではありません解決策を見つけるのを手伝ってください。 – Tangle

+0

申し訳ありません、修正済み –

関連する問題