带验证的Spark读取csv

带验证的Spark读取csv,csv,validation,apache-spark,Csv,Validation,Apache Spark,我正在使用spark的读取功能读取csv文件 val schema = ScalaReflection.schemaFor[CustomClass].dataType.asInstanceOf[StructType] sparkSession.read.option("delimiter",",").schema(schema).csv("test.csv").as[Customclass] 问题在于,当某一行在末尾被剪切或某些字段在开头缺失时,spark会在行的末尾设置空值。我确实希望在读取

我正在使用spark的读取功能读取csv文件

val schema = ScalaReflection.schemaFor[CustomClass].dataType.asInstanceOf[StructType]
sparkSession.read.option("delimiter",",").schema(schema).csv("test.csv").as[Customclass]
问题在于,当某一行在末尾被剪切或某些字段在开头缺失时,spark会在行的末尾设置空值。我确实希望在读取时进行验证,以便spark在某行没有预期分隔符的数目时告诉我或抛出异常


有办法吗?我目前的方法是读取rdd中的每一行,并自己对每一行进行验证。然后,我将rdd转换为数据帧。所以我的问题是:有没有办法跳过这一步并对读取进行验证?

模式
选项设置为
FAILFAST

sparkSession.read.option("mode", "FAILFAST")
  .schema(schema).csv("test.csv").as[Customclass]

模式
选项
设置为
故障快速

sparkSession.read.option("mode", "FAILFAST")
  .schema(schema).csv("test.csv").as[Customclass]

非常感谢。是否有机会获得格式不正确的记录或行?例外?我不知道。在
PERMISSIVE
模式下,您将在
columnNameOfCorruptRecord
中获取记录。是,但此选项不适用于csv。它似乎只适用于JSONA,2年后看起来也不可能获得列名((谢谢!是否有机会获取格式不正确的记录或行?例外?我不知道。在
许可
模式下,您将在
columnNameOfCorruptRecord
中获取记录。是的,但此选项不适用于csv。它似乎只适用于JSO两年后,看起来也不可能获取列。)名字((