带验证的Spark读取csv
我正在使用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会在行的末尾设置空值。我确实希望在读取
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两年后,看起来也不可能获取列。)名字((