如何在Spark的每一行中添加文件夹名称

时间:2018-07-03 11:23:01

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

我们有多个文件夹,每个文件夹包含许多CSV文件。每个文件夹的名称都是唯一的,因为它显示了仪表标识符。我的问题是如何从每个文件夹加载所有平面文件,如何从其中创建一个数据帧,其中包括所有csv文件,但是创建一列并将标识符(文件夹名称)写入它们所属的每一行:

Folder1 : 1.csv, 2.csv, 3.csv
Folder2: 4.csv, 5.csv, 6.csv 

输出应包括所有csv文件,添加的列包含Folder 1和Folder2

1 个答案:

答案 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)