在读取目录下的多个csv文件时创建单个架构数据框

时间:2019-06-24 15:32:25

标签: scala csv io apache-spark-sql

我在一个目录下有数千个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 |

是否有一种无需运行标头统一过程即可获取所需数据帧的方法?

0 个答案:

没有答案