【问题标题】:DataFrame: Append a column to the dataframe and insert respective file name into that columnDataFrame:将一列附加到数据框并将相应的文件名插入该列
【发布时间】:2016-08-12 03:07:39
【问题描述】:

如何将列附加到数据框并将文件名插入列?我能够使用以下代码删除标题并转换为数据帧:

我有 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 中的新列文件名中。

【问题讨论】:

  • 这可能实现吗......请帮助我!
  • 平面地图时不要丢文件名?
  • @zero323 感谢您的回复! ...我在文件中有文件名...那么我们如何将该行作为数据放入数据帧中作为 file_name 列......而不是 drop 我该如何实现它
  • @zero323,如果我们不删除标题,我如何将其转换为数据框..
  • 提示:flatMapValues -> mapValues(例如)

标签: scala apache-spark apache-spark-sql spark-dataframe


【解决方案1】:

按照 cmets 的建议尝试:

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

【讨论】:

  • @LostlnOverflow 感谢您的回复.. 收到错误...-> 42: error: value _2 is not a member of String 请帮我找到解决方案。
猜你喜欢
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2020-05-13
  • 1970-01-01
相关资源
最近更新 更多