我们有多个文件夹,每个文件夹包含许多CSV文件。每个文件夹的名称都是唯一的,因为它显示了仪表标识符。我的问题是如何从每个文件夹加载所有平面文件,如何从其中创建一个数据帧,其中包括所有csv文件,但是创建一列并将标识符(文件夹名称)写入它们所属的每一行:
Folder1 : 1.csv, 2.csv, 3.csv
Folder2: 4.csv, 5.csv, 6.csv
输出应包括所有csv文件,添加的列包含Folder 1和Folder2
答案 0 :(得分:0)
org.apache.spark.sql.functions
软件包具有函数input_file_name
,该函数将添加具有相应文件名称的列。您可以在select
操作中使用它,如下所示:
import org.apache.spark.sql.functions.input_file_name
val df = spark.read.format("csv").option("header", "true")
.load("directory")
.select(input_file_name, 'some-column-name)