使用 dask 加载大型数据集

2024-01-17

我处于具有集群、紧密耦合互连和支持 Lustre 文件系统的 HPC 环境中。我们一直在探索如何利用 Dask 不仅提供计算,而且充当分布式缓存来加速我们的工作流程。我们专有的数据格式是 n 维且规则的,并且我们编写了一个惰性读取器以传递到 from_array/from_delayed 方法中。

我们在跨 Dask 集群加载和保存大于内存的数据集时遇到了一些问题。

hdf5 示例:

# Dask scheduler has been started and connected to 8 workers
# spread out on 8 machines, each with --memory-limit=150e9.
# File locking for reading hdf5 is also turned off
from dask.distributed import Client
c = Client({ip_of_scheduler})
import dask.array as da
import h5py
hf = h5py.File('path_to_600GB_hdf5_file', 'r')
ds = hf[hf.keys()[0]]
x = da.from_array(ds, chunks=(100, -1, -1))
x = c.persist(x) # takes 40 minutes, far below network and filesystem capabilities
print x[300000,:,:].compute() # works as expected

我们还从我们自己的一些文件格式加载了数据集(使用切片、dask.delayed 和 from_delayed),并且随着文件大小的增加,性能也出现了类似的下降。

我的问题:使用 Dask 作为分布式缓存是否存在固有的瓶颈?所有数据都会被迫通过调度程序吗?工作人员是否能够利用 Lustre,或者功能和/或 I/O 是否以某种方式序列化?如果是这样的话,不对海量数据集调用 persist,而只让 Dask 在需要时处理数据和计算会更有效吗?


  • 使用 Dask 作为分布式缓存是否存在固有的瓶颈?

    每个系统都存在瓶颈,但听起来您还没有接近我期望 Dask 遇到的瓶颈。 我怀疑你遇到了其他事情。

  • 所有数据都会被迫通过调度程序吗?

    不,工作人员可以执行自己加载数据的函数。这些数据将保留在工作人员身上。

  • 工作人员是否能够利用 Lustre,或者功能和/或 I/O 是否以某种方式序列化?

    Workers 只是 Python 进程,因此如果集群上运行的 Python 进程可以利用 Lustre(几乎可以肯定是这种情况),那么 Dask Workers 就可以利用 Lustre。

  • 如果是这样的话,不对海量数据集调用 persist,而只让 Dask 在需要时处理数据和计算会更有效吗?

    这当然很常见。这里需要权衡 NFS 的分布式带宽和分布式内存的可用性。

在你的位置上,我会使用 Dask 的诊断来找出是什么占用了这么多时间。您可能想阅读有关的文档了解绩效 http://dask.pydata.org/en/latest/understanding-performance.html以及关于仪表板 http://dask.pydata.org/en/latest/diagnostics-distributed.html尤其。该部分有一个视频可能特别有帮助。我想问两个问题:

  1. 工人是否一直在执行任务? (状态页、任务流图)
  2. 在这些任务中,什么占用了时间? (个人资料页)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 dask 加载大型数据集 的相关文章

  • 如何在 dask/distributed 中存储工作线程局部变量

    使用dask 0 15 0 分布式1 17 1 我想记住每个工作人员的一些事情 比如访问谷歌云存储的客户端 因为实例化它是昂贵的 我宁愿将其存储在某种工作者属性中 执行此操作的规范方法是什么 或者全局变量是正确的选择吗 关于工人 您可以通过
  • 使用 dask 加载大型压缩数据集

    我正在尝试将一个大型压缩数据集加载到 python 中 其结构如下 year zip year month 很多 csv 文件 到目前为止 我已经使用 ZipFile 库迭代每个 CSV 文件并使用 pandas 加载它们 zf ZipFi
  • 使用 dask 合并大型数据集

    我有两个数据集 一个约为 45GB 包含 1 年的日常交易 第二个数据集为 3 6GB 包含客户 ID 和详细信息 我想将两者合并到一个公共列上以创建一个数据集 这超出了服务器的内存 因为每个客户可能有多个交易 我正在开发一个具有 16 个
  • 当字符串列内容比已有内容长时,HDFStore.append(string, DataFrame) 失败

    我有一个通过 HDFStore 存储的 Pandas DataFrame 它本质上存储有关我正在执行的测试运行的摘要行 每行中的几个字段包含可变长度的描述性字符串 当我进行测试运行时 我创建一个新的 DataFrame 其中包含一行 def
  • C/C++ HDF5 读取字符串属性

    我的一位同事使用labview在HDF5文件中写入一个ASCII字符串作为属性 我可以看到该属性存在并读取它 但无法打印它 该属性如 HDF Viewer 中所示 日期 2015 07 09 所以 日期 就是它的名字 我正在尝试使用此代码读
  • hdf5 和 ndarray 附加/大型数据集的省时方法

    背景 我有一个 k n 维时间序列 每个序列表示为 m x n 1 数组 其中包含浮点值 n 列加上代表日期的一列 Example k 大约 400 万 个时间序列 看起来像 20100101 0 12 0 34 0 45 20100105
  • 如何加快大型 xlsx 文件的导入速度?

    我想要处理一个 200MB 的大型 Excel xlsx 文件 包含 15 个工作表和 100 万行 每行 5 列 并根据数据创建 pandas 数据框 Excel 文件的导入速度非常慢 最多 10 分钟 不幸的是 Excel 导入文件格式
  • python 或 dask 并行生成器?

    是否有可能在Python中 也许使用dask 也许使用多重处理 将生成器 放置 在核心上 然后并行地单步执行生成器并处理结果 它需要特别是生成器 或带有 iter 生成器生成的所有生成元素的列表不适合内存 尤其 有了熊猫 我可以打电话rea
  • 将 hdf5 转换为文件夹中组织的原始格式

    我使用脚本使图像与图集匹配 该脚本输入是 raw图像组织在文件夹中 例如 imageFolder folder1 image1 raw image2 raw folder2 image1 raw image2 raw 我有一个图像hdf5我
  • dask 数据帧的 iloc 相当于什么?

    我遇到一种情况 我需要按位置索引 dask 数据帧 我看到没有 iloc方法可用 还有其他选择吗 或者我是否需要使用基于标签的索引 例如 我想 import dask dataframe as dd import numpy as np i
  • HDF5 - 并发、压缩和 I/O 性能 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 HDF5 性能和并发性有以下疑问 HDF5 支持并发写访问吗 撇开并发因素不谈 HDF5 的性能如何 输入 输出性能 does 压缩率影响性能
  • 从 len 18000 的 Dask 数据帧中采样 n= 2000 会生成错误 当“replace=False”时,无法获取比总体更大的样本

    我有一个从 csv 文件创建的 dask 数据框 len daskdf 返回 18000 但当我ddSample daskdf sample 2000 我收到错误 ValueError Cannot take a larger sample
  • Pandas 无法读取使用 h5py 创建的 hdf5 文件

    当我尝试读取使用 h5py 创建的 HDF5 格式文件时 出现 pandas 错误 我想知道我是否只是做错了什么 import h5py import numpy as np import pandas as pd h5 file h5py
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • Pandas hub_table 更快的替代品

    我正在使用熊猫pivot table在大型数据集 1000 万行 6 列 上运行 由于执行时间至关重要 因此我尝试加快流程 目前 处理整个数据集大约需要 8 秒 这太慢了 我希望找到替代方案来提高速度 性能 我当前的 Pandas 数据透视
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • 并行 dask for 循环比常规循环慢?

    如果我尝试使用 dask 并行化 for 循环 它最终会比常规版本执行得慢 基本上 我只是按照 dask 教程中的介绍性示例进行操作 但由于某种原因它在我这边失败了 我究竟做错了什么 In 1 import numpy as np from
  • 在自定义 Dask 图中包含关键字参数 (kwargs)

    我正在使用 Dask 为一项操作构建自定义图表 熟悉如何将参数传递给 Dask 图中的函数 并阅读了docs http dask pydata org en latest custom graphs html 然而似乎还是缺少了一些东西 D
  • Maven项目中的HDF5

    我正在尝试将 hdf hdf5lib H5 导入到 NetBeans 中的 Maven 项目中 它有这个作为导入行 import hdf hdf5lib H5 正如这里所建议的 https support hdfgroup org prod
  • 如何使用Python和h5py读取HDF5属性(元数据)

    我有一个 HDF5 文件 里面有多个文件夹 每个文件夹都添加了属性 有些将属性称为 元数据 我知道如何访问文件夹内的键 但不知道如何使用 Python 提取属性h5py包裹 以下是 HDFView 的属性 Folder1 800 4 Gro

随机推荐

  • HTTP 与 HTTPS 性能

    http 和 https 之间的性能有什么重大差异吗 我似乎记得读到过 HTTPS 的速度是 HTTP 的五分之一 这对于当前一代网络服务器 浏览器有效吗 如果是的话 有任何白皮书支持吗 对此有一个非常简单的答案 分析您的 Web 服务器的
  • 如何从文本中提取命名实体+动词

    嗯 我的目标是从文本中提取 NE 人 和与其相关的动词 例如 我有这样的文字 邓布利多转身沿着街道走回去 哈利 波特在毯子里翻了个身 没有醒来 作为理想的结果我应该得到 邓布利多转身走了 哈利 波特卷起 我使用斯坦福 NER 来查找和标记人
  • Angular 5 与 Canvas drawImage 未显示

    尝试使用drawImage 将背景图像添加到画布 但它没有显示 我知道图像的路径是正确的 因为我可以 img src 那行得通 其他一切在 JavaScript 中都可以正常工作 但不能很好地转换为 Angular HTML
  • 使用 Jquery 删除 CSS 属性

    我发现的所有其他答案仅删除属性的设置 而不是完全删除属性 我正在将元素从绝对定位更改为固定定位 我需要删除 right 定位属性并将其替换为 margin right 以便该元素位于其父 DIV 内的右侧 如果没有删除 right 属性 该
  • 加盐和哈希,为什么不使用用户名?

    我必须承认我对大多数与 Web 应用程序相关的高科技安全问题一无所知 但我至少认为我可以问一件事 因为这是一个直接的问题 并且 希望 有具体的答案 以这个网站为例 http www 15seconds com issue 000217 ht
  • 如何在 macOS 上使用终端重新启动 android adb?

    我一直遇到 Android Studio ADB 无法识别我的设备的问题 到目前为止 我找到的唯一解决方案是完全重新启动整个计算机 但这是不切实际的 我希望能够从终端重新启动 ADB 因为我在这里看到了其他帖子 声称它将解决该问题 但是 我
  • 无法在 HTC One M8 Lollipop 上进行 systrace

    我正在尝试使用systrace来自 Android Studio 的默认设置systrace选项设置 我还没有root手机 HTC Sense v6 0 Android 5 0 1 HTC SDK API 级别 6 55 当我这样做时 我得
  • 如何在Java中生成随机JSON字符串?

    我想测试apache kafka的一个功能 所以我需要用Java生成随机JSON字符串 我的生产数据是JSON格式 我用谷歌搜索 找到了这些网站 如何生成随机字母数字字符串 https stackoverflow com questions
  • 根据滚动隐藏和显示工具栏

    这个问题仅涉及代号一 我需要使 Codename One Form 的工具栏移动 如该视频所示 https www informatica libera net videoLavoro hideShowToolbarOnScrolling
  • 排序日期和时间

    我正在尝试编写一个控制台应用程序来根据开始日期按升序对我的日期和时间进行排序 这是我正在尝试做的一个示例 我的输入 break Start1 15 02 12 12 30PM break End1 15 02 12 01 30PM brea
  • 如何利用 FileReader 的异步特性实现进度条和回调

    我在 for 循环中调用了 FileReader API 以迭代多个文件对象 我使用 FileReader 本质上显示图像的预览 function for var i in Files var fileReader new FileRead
  • 在 .NET 中,如何在不重新压缩 JPEG 的情况下编写 Exif 标头?

    我有一个JPEG http en wikipedia org wiki JPEG我想要设置的图像Exif http en wikipedia org wiki Exchangeable image file format标题 特别是作者 在
  • 限制Spring Boot中的Tomcat只能访问某些IP地址

    我需要将基于 Spring Boot 的应用程序的嵌入式 tomcat 限制为某些 IP 地址 我只想允许来自两个 IP 地址的传入连接 而不是全部 我知道如何在未运行嵌入式的 Tomcat 中执行此操作 但不知道在 Spring Boot
  • 使用 Travis CI 将 Maven 版本部署到 Github

    我成功地使用标签将 JAR 从 Maven 项目部署到了 Github 但是 当前配置假设 JAR 的文件名始终保持不变 但事实并非如此 当我发布新版本时 这将相应更改 因此部署将失败 有没有办法在 YAML 文件中使用通配符 根据我在 S
  • 使用 PouchDB 过滤设计文档

    我正在使用设计文档来确保只有所有者才能修改文档 如何防止 couchdb 复制此设计文档 您可以使用过滤选项 http pouchdb com api html replication in changes and replicate e
  • ZF2:Zend Framework 2 完整 URL(包括主机名)

    在我看来 我需要绘制完整的 URL 像这样 http hostename com default url 当我尝试使用时 this gt url default array 1 2 3 我只得到 index get 有没有任何 Zend 方
  • Carrierwave - 如果文件类型不在白名单上,则触发存在验证

    在我的 Rails 4 应用程序中 我使用 Carrierwave 上传图像 class UserItemImage lt ActiveRecord Base include PicturesHelper attr accessor foo
  • 占位符张量需要机器学习引擎预测中的值,但不需要本地预测

    我一直在开发一个与云 ML 引擎的在线预测服务一起使用的模型 我的模型包含一个placeholder with default我用它来保存预测显着性阈值的张量 threshold tf placeholder with default 0
  • Backbone.js:更改未在 model.change() 上触发

    我在 Backbone js 上面临 更改事件未触发 问题 这是我对用户模型的看法 window UserView Backbone View extend initialize function this model on destroy
  • 使用 dask 加载大型数据集

    我处于具有集群 紧密耦合互连和支持 Lustre 文件系统的 HPC 环境中 我们一直在探索如何利用 Dask 不仅提供计算 而且充当分布式缓存来加速我们的工作流程 我们专有的数据格式是 n 维且规则的 并且我们编写了一个惰性读取器以传递到