首页 > 解决方案 > PySpark read.csv - inferSchema 和模式选项之间的交互

问题描述

我正在尝试在推断架构时读取 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 选项后,它会正确推断出浮点类型列,但我仍然得到了字符串类型。

有没有办法让它在删除格式错误的行后推断模式?还是我必须在没有格式错误的行的情况下重新保存,然后重新读取数据?

标签: pythonpyspark

解决方案


推荐阅读