在 pyspark 中以 csv 格式读取 excel 文件

Posted

技术标签:

【中文标题】在 pyspark 中以 csv 格式读取 excel 文件【英文标题】:Read in an excel file as a csv in pyspark 【发布时间】:2019-11-26 20:34:05 【问题描述】:

这里是第一个问题,所以如果有不清楚的地方,我很抱歉。 我是 pySpark 的新手,我尝试使用 databricks 读取保存为 csv 的 excel 文件,并使用以下代码

df = spark.read.csv('/FileStore/tables/file.csv', sep = ";", inferSchema = "true", header = "true")

这工作正常,除了一些观察得到空值,而在 excel 文件中没有空值。实际值可以在其他行中找到。 也许用一个例子更好地解释: 如果excel文件有A B C D行 然后它变成了表格(对于某些行):

A B null null C D null null

我的问题是如何解决这个问题?提前致谢

【问题讨论】:

有多少列?如果你想替换null,你可以在这里找到例子***.com/questions/42312042/… 很可能excel文件实际上在那些看起来为空的单元格中有值。应该是空间。当您随后转换为 csv 时,会保留空间,因此您会在 CSV(或 A;B; ; )中看到 A;B;;。使用 Spark 读取将正确地从空字段创建空值,参见例如Spark-17916). 【参考方案1】:

现在您将分隔符设置为 ;,但是在 CSV 文件中,分隔符通常是 ,Comma S分隔V价值)。如果您使用 spark CSV 阅读器,分隔符会自动设置为逗号:

spark.read.format("csv")
           .option("header", "true")
           .option("inferSchema", "true")
           .load("/FileStore/tables/file.csv")

【讨论】:

您假设 Ndw 选择的分隔符是错误的,这似乎不太可能,因为 Ndw 说“阅读效果很好”。如果您需要此类详细信息,请在 cmets 中询问。

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

从 csv 中读取 ms 中的时间戳,在 Matlab 中以科学格式显示

如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

在 pySpark (2.3) 中读取本地 csv 文件

如何在 pyspark 中启用 csv 文件的多行读取

在 Pyspark 中读取 CSV 文件引发错误 FileNotFound 错误

java 读CSV 和 Excel