【发布时间】:2019-11-20 17:12:35
【问题描述】:
我正在玩弄镶木地板文件,以了解它们是否适合我的目的。为此,我从 csv 文件加载数据集并将其保存为 parquet 数据集:
import pandas as pd # version 0.25
import pyarrow as pa # version 0.15
import pyarrow.parquet as pq
df = pd.read_csv('my.csv')
df_table = pa.Table.from_pandas(df)
pq.write_to_dataset(df_table, root_path='my.parquet')
这很好用而且很快(约 1 分钟)。但是,当我尝试编写这样的分区拼花数据集时,
pq.write_to_dataset(df_table, root_path='my.parquet', partition_cols=['id'])
需要半个多小时。这似乎很奇怪。我尝试将id 列设置为索引,但这并没有太大变化。我错过了什么吗?
文件的一些背景:~ 500 万行,9 列。 id 列包含约 330,000 个不同的值。将数据集划分成这么小的部分只是一个坏主意吗?
我对 Python 很陌生(我使用的是 3.6.4 版),所以我不确定我是否提供了所有相关信息。如有遗漏请评论。
编辑: 我发现在我的情况下,更少、更大的块更快。这导致了最佳块大小的问题。我在哪里可以找到这方面的信息?
【问题讨论】: