python - 读取压缩的 CSV 文件时出现奇怪的字符
问题描述
我正在尝试读取一个 CSV 文件,该文件保存为 UTF-8 编码文件。当我尝试使用 Pandas 读取文件时,需要很长时间,但我得到了所需的输出。
out_pd = pd.read_csv('../files/example_file_out.csv.gzip', sep='\t', encoding='utf-8', compression='gzip')
在 Spark 中执行几乎相同的操作以从 HDFS 读取完全相同的文件:
out_spark = spark.read.format('csv').options(header = "true", sep = "\t", encoding = "UTF-8").load("/Path/to/Folder/example_file_out.csv.gzip" )
out_spark.show()
有了这个结果:
+-------------------------------------------------- -------------------------------------------------- --+ |���_�example_file_out.csv.gzip�Ѳ�Fr$�|�l�A?��̈��L��F��cWZ�F��Ef�^�5C�k� hW����H$��j�xH�}N| +-------------------------------------------------- -------------------------------------------------- --+ | @�#"<=<^�������...| | ?��ϟ����Ͽ��O�����...| | ك����Y�^� x�o��e>Y...| +------------------------- -------------------------------------------------- --------------+
我真的不知道我做错了什么。在此先感谢您的帮助!
解决方案
Spark 使用文件扩展名推断文件压缩格式。默认情况下,gzip 压缩文件具有扩展名.gz
,因此如果您将文件重命名为具有扩展名.gz
而不是.gzip
,Spark 应该能够正确解压缩 csv 文件。
推荐阅读
- php - php while 语句,除了 post id
- c# - Unity 2D中如何限制回弹角度?
- regex - 正则表达式匹配,直到找到第三次出现的字符,从字符串末尾开始计算所述字符的出现次数
- php - mysqli->insert_id 在移动到新服务器后总是在 PHP 中返回 0
- git - 如何使用 git log pickaxe 显示更改本身?
- vb.net - 跟踪窗口是最后一个焦点
- node.js - 如何将 Visual Studio 代码调试器附加到在 nginx 代理后面的 docker 机器上运行的 Node.JS 应用程序
- angular - 在 FlatMap 完成所有请求后做一个过程
- java - Bazel java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
- java - Netty中的“操作完成”是什么意思