You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark读取part文件时空字符串被转为null,如何保留为空字符串?

解决方案

出现该差异的核心原因是Databricks CSV数据源的默认空值映射规则,在读取Spark输出的part格式CSV文件时,会默认触发空字符串转null的逻辑,你只需要在读取配置中新增两个显式配置项即可:

修改后的代码如下:

var inputDFRdd = spark.emptyDataFrame.rdd
inputDFRdd = spark.read.format("com.databricks.spark.csv")
        .option("mode", "FAILFAST")
        .option("delimiter", ",")
        .option("header", "false")
        .option("inferSchema", "false")
        .option("escape", "\"")
        // 新增以下两个配置
        .option("treatEmptyValuesAsNulls", "false")
        .option("emptyValue", "")
        .load().rdd.zipWithIndex()
        .map(line => Row.fromSeq(Seq(line._2 + 1) ++ line._1.toSeq))

配置说明

  • treatEmptyValuesAsNulls:设为false后会禁止数据源自动将空字段识别为null值
  • emptyValue:显式指定空字段的解析结果为空字符串,覆盖读取part文件时的默认映射逻辑

如果你业务中有自定义的null占位符(比如\N),可以额外添加.option("nullValue", "\\N")配置,让数据源仅将匹配该值的字段解析为null,其他空字段仍保持为空字符串。

内容的提问来源于stack exchange,提问作者Sang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:00:01