【问题标题】:Strange characters while reading gzipped CSV file [duplicate]读取压缩的 CSV 文件时出现奇怪的字符 [重复]
【发布时间】:2021-04-16 19:21:30
【问题描述】:

我正在尝试读取保存为 UTF-8 编码文件的 CSV 文件。当我尝试使用 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| +-------------------------------------------------- -------------------------------------------------- --+ | @�#"Y...| +-------------------------------------------------- -------------------------------------------------- --+

我真的不知道我做错了什么。提前感谢您的帮助!

【问题讨论】:

  • 尝试将文件扩展名更改为.gz
  • 谢谢!这回答了我的问题。正如我在下面提到的,我在 csv 文件之前阅读了一些 json.gzip 文件并且没有问题。只有 show() 函数需要永远,这有点奇怪,因为 json 文件没有 csv 文件那么大。后者现在完美运行。我现在很好奇为什么 show() 函数需要这么长时间,即使它可能不属于本主题。

标签: python csv apache-spark pyspark apache-spark-sql


【解决方案1】:

Spark 使用文件扩展名推断文件压缩格式。默认情况下,gzip 文件的扩展名是 .gz,因此如果您将文件重命名为扩展名 .gz 而不是 .gzip,Spark 应该能够正确解压缩 csv 文件。

【讨论】:

  • 谢谢你,我会马上做的。我还没有尝试过的唯一原因是因为我已经阅读了其他 gzip 压缩文件而没有任何问题。还是仅适用于 csv 文件,最好使用 .gz 而不是 .gzip?
  • 我认为它不仅适用于 csv 文件 - 所有其他文件都应该具有扩展名 .gz 以便 Spark 正确处理。不知道为什么其他文件对你有用。
猜你喜欢
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多