gpt4 book ai didi

python - 在 pyspark 中写入 CSV 文件时选择编码

转载 作者:行者123 更新时间:2023-12-01 08:22:47 24 4
gpt4 key购买 nike

我尝试在使用 pyspark 保存 CSV 压缩文件时设置正确的编码。

这是我的测试:

# read main tabular data
sp_df = spark.read.csv(file_path, header=True, sep=';', encoding='cp1252')
sp_df.show(5)
+----------+---------+--------+---------+------+
| Date| Zone| Duree| Type|Volume|
+----------+---------+--------+---------+------+
|2019-01-16|010010000| 30min3h|Etrangers| 684|
|2019-01-16|010010000| 30min3h| Français| 21771|
|2019-01-16|010010000|Inf30min|Etrangers| 7497|
|2019-01-16|010010000|Inf30min| Français| 74852|
|2019-01-16|010010000| Sup3h|Etrangers| 429|
+----------+---------+--------+---------+------+
only showing top 5 rows

我们可以看到使用编码 CP1252 正确解释了数据。问题是,当我使用 CP1252 编码将数据保存在 CSV gzipped 文件中并检查回来时,特殊字符没有很好地解码:

# Save Data
sp_df.repartition(5, 'Zone').write.option('encoding', 'cp1252').csv(output_path, mode='overwrite', sep=';', compression='gzip')

# read saved data
spark.read.csv(os.path.join(output_path, '*.csv.gz'), header=True, sep=';', encoding='cp1252').show()
+----------+---------+--------+---------+------+
| Date| Zone| Duree| Type|Volume|
+----------+---------+--------+---------+------+
|2019-01-16|010070000| 30min3h|Etrangers| 1584|
|2019-01-16|010070000| 30min3h|Français| 18662|
|2019-01-16|010070000|Inf30min|Etrangers| 12327|
|2019-01-16|010070000|Inf30min|Français| 30368|
|2019-01-16|010070000| Sup3h|Etrangers| 453|
+----------+---------+--------+---------+------+
only showing top 5 rows

有什么想法吗?我使用的是 Spark 2.3

最佳答案

根据official documentation ,编码是一个选项,您应该直接将其放入 csv 方法中,就像使用它进行读取一样。

sp_df.repartition(5, 'Zone').write.option('encoding', 'cp1252').csv(output_path, mode='overwrite', sep=';', compression='gzip')

成为

sp_df.repartition(5, 'Zone').write.csv(output_path, mode='overwrite', sep=';', compression='gzip', encoding='cp1252')

您编写的方式会被 csv 方法 encoding=None 的默认参数覆盖,从而导致 UTF-8 编码。

关于python - 在 pyspark 中写入 CSV 文件时选择编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54515874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com