Spark csv文件大小比使用pandas大2倍



当我用pyspark将数据保存到单个csv文件时,我得到的文件大小比用.toPandas()转换后的文件大小大2倍,然后使用to_csv()保存。

你认为是什么导致了这么大的差异?

有几个因素会对大小差异产生影响。

  1. emptyValue默认情况下,Spark的df.write.csv将保存null值与包装双引号。这为Spark的write增加了每个空值2个字符。要禁用双引号换行,使用.csv(path, emptyValue='')
# Spark write.csv
some value,"",""
# Pandas.to_csv
some value,,
  1. Panda的数据类型隐式转换。:当你在Spark中有可空的整数值时,Pandas会将整数值转换为float,因为Pandas中的整数值是不可空的。这将减少Spark的write的一些字符。
# Spark write.csv
some value,1000,
some value,,
# Pandas .to_csv
some value,1000.0,
some value,,

其他次要的事情可以是Spark默认不写header,而Pandas会写。或者Pandas默认会写入index值,而Spark没有index

我认为还有更多的事情会影响到这两个平台如何存储数据。为了观察差异,我将保存部分数据,并尝试以纯文本形式查看文件以查看差异。

最新更新