- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
问题
我想用dask计算一堆“容易收集”的统计数据。
速度是我最关心的问题,也是我的目标,所以我希望对这个问题有一个广泛的研究。
理想情况下,我希望在不到一小时内完成所描述的问题。
我希望雇佣100-1000名工人。
目前在基准测试中,我正在大型机器上运行这个程序(160核,4tb ram),但计划很快转移到kubernetes。
安装程序
我在数据框中有一些数据(pandas、dask、csv、parquet等)
我还有很多数据子集(带有任意列过滤器),我想为它们计算统计信息。
数据帧大小:介于5 GB和5 TB之间的数据(1亿行,1000列)。预计未来为50-100 TB。
统计数据大小:大约5000个唯一的过滤器,每个唯一的过滤器有1到500个统计数据。(5K-5M统计)
玩具示例如下:
requested_statistics = [
{'filters': [{'col': 'col_1', 'op': 'lt', 'value': 0.8},
{'col': 'col_38', 'op': 'lt', 'value': 0.4},
{'col': 'col_224', 'op': 'gt', 'value': 0.12333}],
'output': {'col': 'col_3', 'op': 'sum'},
'name': 'stat_1'},
{'filters': [{'col': 'col_551', 'op': 'lt', 'value': 0.8},
{'col': 'col_112', 'op': 'gt', 'value': '2018-01-13'},
{'col': 'col_1', 'op': 'lt', 'value': 0.8}],
'output': {'col': 'col_2', 'op': 'avg'},
'name': 'stat_2'}
]
def filter_index(df, filter):
filter_ops = {'lt': lambda x, y: x < y, 'gt': lambda x, y: x > y, 'eq': lambda x, y: x == y}
return filter_ops[filter['op']](df[filter['col']], filter['value'])
def get_indexer(df, filters):
if len(filters) == 1:
return filter_index(df, filters[0])
return np.logical_and(filter_index(df, filters[0]), get_indexer(df, filters[1:]))
def get_statistic(df, statistic):
indexer = get_indexer(df, statistic['filters'])
agg_ops = {'sum': np.sum, 'avg': np.mean, 'unique_count': lambda x: x.unique().size}
return agg_ops[statistic['output']['op']](df[statistic['output']['col']][indexer])
all_stats = {x['name']: get_statistic(df, x) for x in requested_statistics}
future_stats = client.compute(all_stats)
。
client.compute(stat, sync=True)
或
client.compute(stat).result()
)。
filter_index
和
get_indexer
字段中添加了缓存。
indexer = client.persist(indexer)
,在以后的调用中返回持久化索引器对于
get_indexer
,我还添加了一个
combinations
检查,试图查看高速缓存中是否存在任何过滤器子集。我还优化了调用统计信息的顺序,以便在下一个集合中最多只需要1个新的更改索引器。
cache.pop(index_id)
,一旦计算不再需要它持久化),但这是我的下一步。
htop
可以看出,大多数情况下,只有
dask-scheduler
在以100%的速度运行,而工人大多处于空闲状态。
df.query(string)
,但由于它在整个数据帧上运行,因此似乎效率低下(大量重复数据)这是真的吗,还是通过使用内置语法分析器取得了一些成功(我注意到dask图对此较小,但不确定它是否值得)。
Event loop was unresponsive in Worker for Xs.
警告我能做些什么来帮助平衡工作,或者重新编写分配给工作人员的任务,或者使调度程序更具响应性?
repartition(npartitions=num_workers*2)
,但我不确定这是一个好的启发式还是我应该使用什么?
最佳答案
我想到了两个一般性的建议,但是如果没有实践经验,很难诊断出这样的问题。听起来你已经在看仪表盘了,很高兴听到我将在这里集中讨论两个避免调度开销的建议,因为这是您特别提到的。
使用较大的分区dd.read_csv
等操作的默认分区大小足够小,可以在消费型笔记本电脑上使用。(我怀疑它们大约是128MB)考虑到节点的大小,您可以将其增加10倍(或更多)并保持良好状态。这将减少您的调度开销10倍。
使用高级图融合
截至2018年12月20日,这仍在开发分支中,但dask.dataframe开始在表达式级别而不是任务级别融合。这将有助于显著减少数千个统计数据的开销,从dask的角度来看,可能会将它们变成一个任务。
您可能需要跟踪以下prs:
https://github.com/dask/dask/pull/4092
https://github.com/dask/dask/pull/4229
我还鼓励您将您的用例作为github问题提供一个综合示例,以便它可以为将来的开发提供信息。我建议使用dask.datasets.timeseries()
来生成一个假数据帧,然后使用一些简单的方法从中生成大量简单的统计数据(如果可能的话,简单的方法会更好,这样维护人员就不必陷得太深)。
关于python - 如何使用dask有效地计算许多简单统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53844188/
我目前正在学习数据挖掘,有以下问题。 机器学习和数据挖掘之间有什么关系? 我发现许多数据挖掘技术都与统计相关,而我“听说”数据挖掘与机器学习有很多关系。所以我的问题是:机器学习与统计学密切相关吗? 如
我有很多表的数据,例如: event_id player finish 1 a 1 1 b 2 1 c
我对 http_status_module 提供的统计数据感兴趣 特别是上游部分的统计数据。 http://nginx.org/en/docs/http/ngx_http_status_module.
除了 Cluster MBean 之外,是否有任何可以在 Akka (Java) 中启用的内置 JMX 公开监控/统计信息?我看过 Typesafe Console,但由于它需要许可证才能用于从多个节
我正在尝试在我的程序中使用“usage”统计信息来获取类似于 time 的数据工具。但是,我很确定我做错了什么。这些值似乎是正确的,但有时可能有点奇怪。我没有在网上找到好的资源。有人知道如何做得更好吗
我有一个带有统计表的 MySQL 数据库。我想以年历、月度的形式输出数据。对于没有点击率的几个月,我想花费一个“空”DIV。有两个ID。 $query = mysqli_query($db,"SELE
设置: 问题是经典概率问题的复杂形式: 70 colored balls are placed in an urn, 10 for each of the seven rainbow colors.
有哪些 Ruby gem 可以执行数据处理? 最佳答案 我知道有 3 种从 Ruby 访问 R 的方法: RinRuby RSRuby 通过 Rserve-Ruby-Client 预约 RinRuby
背景 图像领域内的一个国内会议快要召开了,要发各种邀请邮件,之后要录入、统计邮件回复(参会还是不参会等)。如此重要的任务,老师就托付给我了。ps: 统计回复邮件的时候,能知道谁参会或谁不参会。
我正在添加用户输入的几个数字并将它们添加到数组列表中。 到目前为止我的代码: package project143; import java.util.*; /** * @author -- */
正如标题所示,我需要做的是在各种 iO/Android/Windows 应用程序中跟踪各种用户事件 - 例如点击、滑动、在页面上花费的时间等。 这些应用程序基于响应式 HTML/CSS/JS,并具有简
我希望计算 HTML 表中每个唯一值的实例数,并在其自己的表中返回结果。该表是根据用户的文本输入生成的。例如,用户输入可能如下所示: Report 46 Bob Marley 4/20/2
如何使用 PHP 计算数字数组的 z 分数?我需要计算 z 分数,然后找到百分位数 (CDF)!我可以使用哪些 PHP 函数?谢谢! 最佳答案 以下代码将给出 CDF 的良好近似值(Abramowit
我只是想知道是否可以计算 GitHub 上空存储库的总数。 如果不适合所有用户,可以为自己做吗? 编辑 我已经尝试过size:0搜索,但似乎返回了很多包含数据的存储库。采用 size:0..1 之类的
public class Scanner { private HtmlProcessor hp; private String baseUrl; private int ste
我正在使用 Mule ESB 3.4。我想开发一个自定义 Java 组件来计算流收到的请求数量。流程将例如像这样: http inbound-endpoint -> counter -> vm-out
我喜欢借助 GitHub API 来统计存储库中所有开放的拉取请求和问题。我发现 API 端点 /repos/:owner/:repo 结果包含 open_issues 属性。然而,这是问题和拉取请求
如何使用 PHP 计算数字数组的 z 分数?我需要计算 z 分数,然后找到百分位数 (CDF)!我可以使用哪些 PHP 函数?谢谢! 最佳答案 以下代码将给出 CDF 的良好近似值(Abramowit
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在尝试以编程方式获取搜索字词列表的 Google 新闻搜索结果计数(即有多少个结果),但仅限于过去 1 年。使用用户界面搜索时,结果计数仅出现在常规搜索中,但在“工具 > 最近 > 过去一年”下时
我是一名优秀的程序员,十分优秀!