PySpark read.csv-inferSchema和模式选项之间的交互

时间:2018-10-23 15:55:13

标签: python pyspark

我正在尝试在推断架构的同时读取csv:

df = spark.read.csv('path/to/csv',
inferSchema=True,
header=True)

但是,我的数据包含一些格式错误的行,这导致某些列中的值溢出到其相邻列中。

所以我将模式设置为DROPMALFORMED:

df = spark.read.csv('path/to/csv',
inferSchema=True,
header=True,
mode='DROPMALFORMED')

这消除了格式错误的行,但是我从inferSchema获得的数据类型与以前相同。

例如,一列都是浮点数,但插入字符串的格式错误的行除外。因此,在代码的第一个版本中,推断出一个字符串类型列。 我期望添加DROPMALFORMED选项之后,它将正确地推断出一个float类型的列,但是我仍然得到了一个字符串类型。

在删除格式错误的行之后,是否有任何方法可以使其推断架构?还是我必须在没有格式错误的行的情况下重新保存,然后重新读取数据?

0 个答案:

没有答案