我有一个很大的羽毛文件,我想把它改成 parquet 的,这样我就可以用Pyspark了。有没有比下面更有效的方法来改变文件类型呢?
df = pd.read_feather('file.feather').set_index('date')
df_parquet = df.astype(str)
df_parquet.to_parquet("path/file.gzip",
compression='gzip')
由于 Dataframe df
占用了我的内存,我正在寻找替代方法。
1条答案
按热度按时间bogh5gae1#
使用您发布的代码,您正在执行以下转换:
1.将数据从磁盘加载到RAM中;羽化文件已经是Arrow格式。
1.将DataFrame从箭头转换为Pandas
1.将DataFrame从Pandas转换为箭头
1.将DataFrame从Arrow序列化到Parquet中。
步骤2-4都是非常昂贵的步骤。您将无法避免4,但通过将数据保留在Arrow中而不进入panda循环,您可以使用以下代码片段避免2+3:
这是个小问题,但您应该避免使用以
.gzip
结尾的Parquet文件。.gzip
/.gz
结尾表示整个文件是用gzip
压缩的,您可以用gunzip
解压缩。这不是用gzip压缩的Parquet文件的情况。Parquet格式会压缩单个段,而不压缩元数据。这导致以高得多的压缩速度进行几乎相同的压缩。因此,压缩算法是实现细节,对其他工具不透明。