apache-spark - 使用编码 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 读取正确
解决方案
在从 CSV 文件源创建 Spark 数据框时添加这些选项 -
.option('encoding', 'UTF-16')
.option('multiline', 'true')
推荐阅读
- javascript - 搜索 Javascript 未生成正确的网址
- java - 如何从Java中的JSON映射另一个对象中的对象数组
- macos - 当我的 index.html 被选中并且我按下“启动”时,mac 上的 sublime 文本的浏览器同步没有运行
- python - 在 python 中,我想在一分钟内运行一次应用程序调度程序,但我在一分钟内运行 2 次,我该如何解决它
- javascript - 单击发生时,Jquery 删除活动的类
- elasticsearch - ElasticSearch:在数组中进行全文搜索,忽略所搜索文本是数组元素一部分的文档
- html - Bootstrap CSS glyphicon 不显示。我应该怎么办?
- postgresql - 无法使用 slick-pg 在 postgis 上运行 slick 查询
- git - ubuntu 20.04 上的鱼壳的 git 配置完成搞砸了
- apache - 执行 DNS 翻转时的 OIDC 问题