为什么排序后的 parquet 文件比未排序的文件大?
Why does a sorted parquet file have a larger size than a non-sorted one?
我创建了一个数据框,如下所示:
expanded_1 = pd.DataFrame({"Point": [random.choice(points) for x in range(30000000)],
"Price": [random.choice(prices) for x in range(30000000)]
})
我存储为 parquet 文件,它在磁盘上的大小为 90.2 MB。
Post 研究如何使用 parquet 进行压缩,我按点对值进行排序,以便可以将相似的数据保存在一起,并理解这将使默认的 parquet 压缩技术更有效.然而,我看到的结果却恰恰相反。在 运行 以下:
expanded_1.sort_values(by=['Point']).to_parquet('/expanded_1_sorted.parquet')
生成的文件大小为 211 MB。
什么导致大小增加?
我认为是乱序索引,reset_index(drop=True)
似乎修复了它。当我用 points = prices = range(1000)
.
测试时,它没有变得更大,而是变得更小(未分类原始的一半)
或者正如@0x26res 指出的那样,.sort_values(by=['Point'], ignore_index=True)
效率更高。没有必要修复你没有破坏的东西。结果是一样的。
我创建了一个数据框,如下所示:
expanded_1 = pd.DataFrame({"Point": [random.choice(points) for x in range(30000000)],
"Price": [random.choice(prices) for x in range(30000000)]
})
我存储为 parquet 文件,它在磁盘上的大小为 90.2 MB。
Post 研究如何使用 parquet 进行压缩,我按点对值进行排序,以便可以将相似的数据保存在一起,并理解这将使默认的 parquet 压缩技术更有效.然而,我看到的结果却恰恰相反。在 运行 以下:
expanded_1.sort_values(by=['Point']).to_parquet('/expanded_1_sorted.parquet')
生成的文件大小为 211 MB。
什么导致大小增加?
我认为是乱序索引,reset_index(drop=True)
似乎修复了它。当我用 points = prices = range(1000)
.
或者正如@0x26res 指出的那样,.sort_values(by=['Point'], ignore_index=True)
效率更高。没有必要修复你没有破坏的东西。结果是一样的。