DataFrame:将列附加到数据框并将相应的文件名插入该列

时间:2016-08-10 14:54:40

标签: scala apache-spark apache-spark-sql spark-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|

但是,我无法识别我从哪个文件获取的记录,所以如何针对每条记录获取文件名并将其插入到DF的新列文件名中。

1 个答案:

答案 0 :(得分: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()