Как добавить имя файла в столбец во фрейме данных при объединении нескольких файлов? - PullRequest
1 голос
/ 09 октября 2019

Как я могу добавить столбец file_name в фрейм данных, когда данные загружаются в фрейм? Итак, я хочу, чтобы имя_файла отображалось для каждой записи в кадре данных.

Я провел некоторое исследование по этому вопросу и обнаружил что-то, что, похоже, должно работать, но на самом деле он не загружает никаких имен файлов, толькоданные в самих файлах.

import org.apache.spark.sql.functions._

val df = spark.read.format("csv")
   .option("sep","|")
   .option("inferSchema","true")
   .option("header","false")
   .load("mnt/rawdata/2019/01/01/corp/ABC*.gz")
   df.withColumn("file_name", input_file_name)

Что не так с моим кодом здесь? Спасибо.

1 Ответ

1 голос
/ 09 октября 2019

Функция input_file_name создает строковый столбец для имени файла текущей задачи Spark.

import org.apache.spark.sql.functions.input_file_name
val df= spark.read
      .option("delimiter", "|")
      .option("header", "false")
      .csv("mnt/rawdata/2019/01/01/corp/")
      .withColumn("file_name", input_file_name())
...