首页 > 解决方案 > 使用编码 utf-16le 从 csv 加载数据

问题描述

我使用的是 spark 版本 3.1.2,我需要从编码为 utf-16le 的 csv 加载数据。

df = spark.read.format("csv")
    .option("delimiter", ",")
    .option("header", true)
    .option("encoding", "utf-16le")
    .load(file_path)
df.show(4)

看来spark只能正常读取第一行: 从第二行开始,要么是乱码,要么是空值

但是,python 可以使用代码正确读取数据:

with open(file_path, encoding='utf-16le', mode='r') as f:
    text = f.read()
    print(text)

打印结果如: python 读取正确

标签: apache-spark

解决方案


在从 CSV 文件源创建 Spark 数据框时添加这些选项 -

.option('encoding', 'UTF-16')
.option('multiline', 'true')

推荐阅读