繁体   English   中英

nunique 的 Dask Grouby 性能太慢。 如何提高性能?

Dask Grouby Performance for nunique is too slow. How to improve the performance?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有超过 5GB 的大文件。 我以镶木地板格式存储它们。 当我对 600k+ 条记录的小样本集进行如下代码所示的 groupby 操作时,Dask 耗时超过 6 分钟,而 pandas 仅耗时 0.4 秒。 虽然我知道如果数据集适合 memory,pandas 会更快,但我的问题是,如果我将整个镶木地板文件传递给 Dask dataframe,性能会提高吗?

还建议我如何改进以下代码,以便我可以在几秒钟而不是几分钟内运行。

示例:使用 Dask Dataframe

StartTime = datetime.datetime.now()
df = dd.read_parquet('201908.parquet', columns=['A', 'B'], engine='pyarrow')
print (len(df))
df = df.set_index ('A')
rs = df.groupby('A').B.nunique().nlargest(10).compute(scheduler='processes')
print (rs)
EndTime = datetime.datetime.now()
print ("Total Time Taken for processing: " + str(EndTime - StartTime))

Output 是:

606995
A
-3868378286825833950    7
 1230391617280615928    7
 381683316762598393     6
-5730635895723403090    5
 903278193888929465     5
 2861437302225712286    5
-9057855329515864244    4
-8963355998258854688    4
-7876321060385968364    4
-6825439721748529898    4
Name: B, dtype: int64
Total Time Taken for processing: 0:06:05.042146

使用 Pandas 的示例:

StartTime = datetime.datetime.now()
df = pd.read_parquet('201908.parquet', columns=['A', 'B'], engine='pyarrow')
print (len(df))
df = df.set_index ('A')
rs = df.groupby('A').B.nunique().nlargest(10)
print (rs)
EndTime = datetime.datetime.now()
print ("Total Time Taken for processing: " + str(EndTime - StartTime))

Output 是:

606995
A
-3868378286825833950    7
 1230391617280615928    7
 381683316762598393     6
-5730635895723403090    5
 903278193888929465     5
 2861437302225712286    5
-9057855329515864244    4
-8963355998258854688    4
-7876321060385968364    4
-6825439721748529898    4
Name: B, dtype: int64
Total Time Taken for processing: 0:00:00.419033
1 个回复

我相信对于 dask dataframe 的近似 groupby nunique 算法存在一个未解决的问题。 如果你特别感兴趣,你可以研究一下。 Dask 数据帧的非 groupby nunique 算法要快得多。

1 HiveQL运行太慢(需要提高性能)

我正在研究Hive及其它的新功能。 我正在尝试改善以下代码的性能: 此代码的目的是将来自source_table的行插入到target_table ,并且其colx在label_table中label_table 。 source_table包含约14亿行, label_ta ...

4 CurrentRegion.SpecialCells(xlCellTypeVisible) 太慢 - 提高性能的技巧?

我正在尝试自动化具有 5 个不同信息源的报告。 我正在尝试使用 ListObjects 将不同表的 UNION 合并为一个表,一切正常,除非我复制第一个 ListObject 的第一列。 复制第一列大约需要 2 分钟,接下来的列需要不到 1 秒。 每次运行 VBA 脚本时,我都会删除目标表的所有行 ...

5 性能诊断可提高性能

我在Visual Studio 2013中遇到了一个奇怪的异常。我在我的程序上运行性能分析(使用CPU采样),我发现在某些情况下,程序在分析时运行得更快。 在需要使用较少量数据的情况下,性能分析似乎可以提高程序的性能。 该程序使用并行扩展(C#和LINQ)并行化。 我的假设是这与并行性 ...

6 mysql如何提高性能

我有两个表,现在我必须按B的顺序对表A进行排序: 一种: B: 现在,我想从表A中获取最多5个用户的限制: 我已经为表B中的 a_id列创建了索引。 执行后, 说明 : 我发现第一个用过的使用临时的; 使用filesort ,我知道必须重构! ...

2015-09-25 01:24:58 1 43   php/ mysql
8 如何提高性能

我有以下表结构: 我对此表执行两种类型的CRUD操作。 SELECT * FROM [dbo].[TableABC] WHERE FieldA = @FieldA INSERT INTO [dbo].[TableABC](FieldA,FieldB,FieldC,Fiel ...

9 如何通过翻译提高性能?

我读了一篇关于离子性能改进的文章,我看到一个翻译的主题优于margin,因为它使用比CPU更快的GPU来渲染。 如何在此动画中使用margin-right和padding? 例如: 渲染速度较慢: 渲染速度更快: 对于margin-right ,我尝试使用trans ...

2019-05-25 18:55:23 0 15   ionic3
10 通过毛刺提高性能

我对使用bliting图形有些陌生。 但是我本人已经编写了一些演示,并且我一直在阅读有关使用方法的很多信息。 我一直看到的一个共同主题是所有这些都是蛮力渲染。 首先绘制最远的后向对象,然后逐步遍历所有其他对象。 甚至将要完全重叠的绘图对象。 他们所有人都这么说的原因是,进行任何 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM