我需要优化数据才能执行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)
答案 0 :(得分:1)
这是如何解析目录名称的错误:显然,您是第一个使用包含数字的字段名称,因为添加了“钻取”式目录分区选项。
修复程序在这里:https://github.com/dask/fastparquet/pull/190并于2017年7月30日合并为主人,最终将被释放。
目前,您可以重命名列,不要包含数字。