Создайте один кадр данных схемы при чтении нескольких файлов CSV в каталоге - PullRequest
3 голосов
/ 24 июня 2019

У меня есть тысячи CSV-файлов, которые имеют одинаковые, но не идентичные заголовки в одном каталоге. Структура выглядит следующим образом:

путь / к / файлов / unique_parent_directory / *. CSV

Один CSV-файл может быть:

| Column_A | Column_B | Column_C | Column_D |
| V1 | V2 | V3 | V4 |

Второй CSV-файл может быть:

| Coulmn_A | Coulmn_B | Coulmn_E | Coulmn_F |
| V5 | V6 | V7 | V8 |

Результат, который я хочу создать, - это один Spark Dataframe, который правильно объединяет файлы без перекрывающихся столбцов, вывод для предыдущего примера должен быть таким:

| Column_A | Column_B | Column_C | Column_D | Coulmn_E | Coulmn_F |
| V1 | V2 | V3 | V4 | Нуль | Ноль |
| V5 | V6 | Нуль | Нуль | V7 | V8 |

Код, который я использую для создания фреймов данных:

val df = sparkSession.read
          .format("csv")
          .option("header", "true")
          .option("inferSchema", "true")
          .option("mergeSchema", "true")
          .load(path/to/files/unique_parent_directory/*.csv)
          .persist(StorageLevel.MEMORY_AND_DISK_SER)

Но я получаю следующий результат:

| Column_A | Column_B | Column_C | Column_D |
| V1 | V2 | V3 | V4 |
| V5 | V6 | V7 | V8 |

Есть ли способ получить нужный фрейм данных без запуска процесса объединения заголовков?

...