使用partition_on选项

时间:2017-07-30 15:05:42

标签: dask

我需要优化数据才能执行group_by 目前,我有几个parquet个文件(超过2.5B行)的数据,如下所示:
ID1 | ID2 |位置|
AERPLORDRVA | AOAAATDRLVA |无
ASDFGHJHASA | QWEFRFASEEW |家

我正在添加第三列,以便使用分区(以及append分段)重新保存文件,这有助于groupby的帮助 df['ID4']=df.ID1.apply(lambda x: x[:2])

当我查看df时,我会看到这样的列 ID1 | ID2 |位置| ID4
AERPLORDRVA | AOAAATDRLVA |没有| AE
ASDFGHJHASA | QWEFRFASEEW |家| AS
....

但是当我运行以下代码时,ID4列会发生变化 dd.to_parquet(path2newfile, df, compression='SNAPPY', partition_on = ['ID4'], has_nulls= ['Location'], fixed_text ={'ID1':11,'ID2':11,'ID4':2}

df2 = dd.read_parquet(path2newfile)
ID1 | ID2 |位置| DIR0
AERPLORDRVA | AOAAATDRLVA |没有| ID4 = AE
ASDFGHJHASA | QWEFRFASEEW |家| ID4 = AS
....

有什么想法吗?

我计划在ID4内加入groupby,从而提高查询效率 dfc = df.groupby(['ID4','ID1','ID2').count()

我正在使用24核和190GB的单个工作站(尽管dask群集仅识别123.65GB)

1 个答案:

答案 0 :(得分:1)

这是如何解析目录名称的错误:显然,您是第一个使用包含数字的字段名称,因为添加了“钻取”式目录分区选项。

修复程序在这里:https://github.com/dask/fastparquet/pull/190并于2017年7月30日合并为主人,最终将被释放。

目前,您可以重命名列,不要包含数字。