spark 读取csv 中文乱码
时间: 2025-05-16 09:20:46 浏览: 26
### Spark读取CSV文件时中文乱码的解决方案
当使用Spark读取CSV文件时,如果源数据采用GBK或其他非UTF-8编码格式,则可能会出现中文乱码问题。这是因为`spark.read.textFile()`和`spark.read.csv()`等方法默认以UTF-8编码解析文件内容[^1]。
为了有效解决这一问题,可以通过设置`encoding`选项来指定正确的字符集编码。以下是具体的实现方式:
#### 设置`encoding`参数
在调用`spark.read.csv()`或`spark.read.textFile()`方法时,可以显式地通过`.option("encoding", "gbk")`指定编码为GBK。例如:
```scala
val spark = SparkSession.builder()
.master("local")
.appName("Read CSV with GBK Encoding")
.getOrCreate()
// 显式设置 encoding 参数为 gbk
val df = spark.read
.option("header", "true") // 如果有表头则设为 true
.option("encoding", "gbk") // 指定编码为 gbk
.option("inferSchema", "true") // 自动推断列的数据类型
.csv("/path/to/your/file.csv")
df.show() // 查看前几行数据验证是否正常显示
```
此代码片段中设置了三个重要选项:
1. `header`: 表示输入文件的第一行是否作为列名。
2. `encoding`: 指定文件的实际编码格式,在这里是GBK。
3. `inferSchema`: 是否自动推测每列的数据类型。
通过这种方式能够正确处理GBK编码的文件并避免乱码现象的发生[^4]。
另外需要注意的是,对于不同版本的Spark可能支持的功能略有差异,请确保使用的Spark版本兼容这些配置项[^3]。
#### 验证结果
完成上述操作后,可通过打印DataFrame的部分记录或者保存转换后的数据至新位置来进行效果确认。比如执行如下命令查看前五行数据是否有误:
```scala
df.limit(5).show(false)
```
这样不仅可以直观判断是否存在乱码情况,还能进一步分析数据结构是否符合预期需求。
---
###
阅读全文
相关推荐


















