PySpark产生的ORC文件比Apache ORC工具大得多

时间:2019-11-16 16:19:31

标签: python pandas apache-spark pyspark orc

我有一个大型数据集,我想保存在ORC表中以将其导入AWS Athena。 由于我使用python生成数据,因此我首先尝试使用pyspark将pyspark documentation之后的熊猫数据框导出为orc表。

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
# Convert pandas dataframe to spark dataframe
spark_df = spark.createDataFrame(pandas_df)
# Write the dataframe as an orc table
spark_df.write.format("orc").save("test.orc")

此过程不仅创建一个表,而且创建一个名称为test.orc的目录,并在其中创建许多orc文件,如下所示:

enter image description here

如果我不使用pyspark创建我的orc文件,而是将Pandas数据帧导出为csv文件,然后使用Apache ORC C++ tools将csv文件转换为orc,我得到的只是一个小得多的文件大小超过pyspark生成的文件:

csv-import "struct<a:bigint,b:string>" test.csv test.orc

enter image description here

一个区别是pyspark使用snappy进行压缩,而ORC C ++使用zlib工具进行压缩,但是大小差异很大。 pyspark有什么方法可以产生具有相同压缩级别的单个表?

0 个答案:

没有答案