在 Spark 中读取不同的 csv 文件

Posted

技术标签:

【中文标题】在 Spark 中读取不同的 csv 文件【英文标题】:Read different csv file in Spark 【发布时间】:2021-02-12 04:26:01 【问题描述】:

我在同一个存储位置目录中有 2 个 csv 文件。

第一个 csv 文件:

id name age
1  Hi   20
2  Hello 21

第二个 csv 文件:

id name age country
3  hi1  20   India

当我通过 spark 阅读时

spark.read.format("csv").option("inferschema","true").load("<location>")

我可以看到所有数据,对于 id 1 和 2,国家/地区为 NULL,但我得到了两个标题。

电流输出:

_c0 | _c1 | _c2 | _c3 | _c4
id   |name  |country| age | lastname
3    |dfg   |US     | 45  | HI
4    |ghj   |US1    | 33  | Hello
id   | name |country|age  | null
1    |asd   | India |21   | null
2    |sdf   |Australia|20 | null

如何在spark中获取以所有列为标题的数据框和对应的数据。

预期输出:

id   |name  |country| age | lastname
3    |dfg   |US     | 45  | HI
4    |ghj   |US1    | 33  | Hello
1    |asd   | India |21   | null
2    |sdf   |Australia|20 | null

【问题讨论】:

有点不清楚你的目标是什么。您能否添加当前和预期的输出? 更新了查询 添加header的option等于true like .option("header","true") 【参考方案1】:

您只需要通过指定 header 选项为 true 来告诉 spark 您正在读取的 csv 文件中有标题。

您可以在以下文件夹中读取您的 csv 文件:

val df = spark.read.format("csv").option("inferschema","true").option("header","true").load("<location>")

你可以看到如下输出:

【讨论】:

以上是关于在 Spark 中读取不同的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

Spark s3 csv文件读取顺序

在 Spark 中从具有不同标头的 CSV 文件形成 DataFrame

从 HDFS CSV 文件构建的 Spark Dataframe 中提取列名

spark中不同的读取选项有啥区别?

读取具有不同列顺序的文件

如何在Spark Scala中以CSV格式编写不同的布局