我在一个目录下有数千个CSV文件,这些文件的标题相似但不相同。结构如下:
path / to / files / 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 |
是否有一种无需运行标头统一过程即可获取所需数据帧的方法?