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

Spark读取CSV与ISO-8859-1编码文本文件的行为差异排查

编码问题分析与解决

问题根源

你遇到的问题核心在于Spark的textFile方法不会继承DataFrameReader实例中设置的encoding参数:

  • csv是DataFrameReader的原生方法,会正确读取并应用你通过.option("encoding", "ISO-8859-1")设置的编码配置;
  • 而textFile虽然可以通过DataFrameReader调用,但底层实际是调用SparkSession的textFile方法,不会继承当前DataFrameReader实例的配置项,导致编码设置失效,读取时默认使用UTF-8编码解析ISO-8859-1格式的文件,最终出现乱码。

修复方案

有两种简单有效的修复方式:

方式一:使用DataFrameReader的text方法替代textFile

text是DataFrameReader的原生方法,会正确应用已设置的编码,返回结构为value: String列的DataFrame,和textFile输出结构一致:

val text: DataFrame = reader.text(inFile)
text.show()

方式二:调用textFile时显式指定编码

直接在调用textFile前单独设置编码,确保参数被正确应用:

val text: Dataset[String] = spark.read.option("encoding", "ISO-8859-1").textFile(inFile)

修改后运行代码,文本文件的读取结果会和CSV一样正常显示José, André。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:51:25