【问题标题】:Spark read csv with validationSpark读取带有验证的csv
【发布时间】:2018-02-05 19:59:11
【问题描述】:

我正在使用 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 转换为 Dataframe。所以我的问题是:有没有办法跳过这一步并在读取时进行验证?

【问题讨论】:

    标签: csv validation apache-spark


    【解决方案1】:

    modeoption设置为FAILFAST

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

    【讨论】:

    • 谢谢!有没有机会得到记录或格式错误的行?
    • 例外?不是我知道的。在PERMISSIVE 模式下,您将获得columnNameOfCorruptRecord 中的记录。
    • 是的,但此选项不适用于 csv。它似乎只适用于 json
    • 2年后看起来也无法获得列名((
    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2022-01-16
    • 2016-12-03
    • 1970-01-01
    • 2015-11-11
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多