使用 Dask 处理大型压缩 csv 文件

2024-04-24

设置是我有八个大的 csv 文件(每个 32GB),每个文件都用 Zip 压缩为 8GB 文件。我无法使用未压缩的数据,因为我想节省磁盘空间,但没有剩余 32*8GB 空间。我无法加载一个文件,例如pandas因为它不适合内存。

我认为 Dask 是完成该任务的合理选择,但如果您认为它适合目的,请随意建议其他工具。

是否可以通过并行读取压缩文件的多个块、处理每个块并将结果保存到磁盘来使用 Dask 处理一个 8GB 压缩文件?

第一个问题是达斯克不支持.zip http://dask.pydata.org/en/latest/bytes.html#compression. 这个问题 https://github.com/dask/dask/issues/2554建议使用dask.delayed,但我也可以将格式更改为.xz或者是其他东西。

其次,可能与压缩格式的选择相关的是是否可以并行访问压缩文件的仅部分内容。

或者最好将每个未压缩的 csv 文件分割成适合内存的较小部分,然后使用如下所示处理重新压缩的较小部分:

import dask.dataframe as dd

df = dd.from_csv('files_*.csv.xz', compression='xz')

现在,我更喜欢类似于第一个解决方案的东西,它似乎更精简,但我可能完全错误,因为这个领域对我来说是新的。

感谢您的帮助!


The easiest解决方案当然是将大文件流式传输到多个压缩文件中(记住每个文件以换行符结束!),然后按照您的建议使用 Dask 加载这些文件。每个较小的文件将成为内存中的一个数据帧分区,因此只要文件足够小,在使用 Dask 处理数据时就不会耗尽内存。

这里的根本原因是,格式列表 bz2、gz 或 zip 不允许随机访问,读取数据的唯一方法是从数据的开头开始。xz是唯一允许在文件内进行块式压缩的格式,因此原则上可以进行块式加载,这与真正的随机访问不太一样。那会做你所追求的。然而,这种模式实际上与拥有单独的文件非常相同,因此不值得付出额外的努力以阻塞模式(不是默认模式)写入文件并使用函数dask.bytes.compression.get_xz_blocks, xz_decompress,当前未用于代码库中的任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Dask 处理大型压缩 csv 文件 的相关文章

  • ValueError:“连接”层需要具有匹配形状的输入(连接轴除外)

    我正在尝试为我的项目构建 Pix2Pix 并收到错误 值错误 Concatenate层需要具有匹配形状的输入 除了连接轴之外 获得输入形状 None 64 64 128 None 63 63 128 生成器是一个 U 网模型 我的输入高度
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • Pip install 导致此错误“ cl.exe' failed with exit code 2 ”

    我已经阅读了有关此错误的所有其他问题 但令人沮丧的是 没有一个给出有效的解决方案 如果我跑pip install sentencepiece在命令行中 它给出了以下输出 src sentencepiece sentencepiece wra
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • 引发 RuntimeError(f"目录 '{directory}' 不存在") RuntimeError: 导入 fitz 时目录 'static/' 不存在

    当我运行 extract img py 文件时出现此错误 RuntimeError f 目录 directory 不存在 运行时错误 导入 fitz 时不存在目录 static 我不明白为什么这会给我发回此错误消息 我之前看到过关于这个话题
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • 当 DetailView 遇到时更新模型字段。 [姜戈]

    我有一个类似的 DetailViewviews py views py class CustomView DetailView context object name content model models AppModel templa
  • 向 Python 2.6 添加 SSL 支持

    我尝试使用sslPython 2 6 中的模块 但我被告知它不可用 安装OpenSSL后 我重新编译2 6 但问题仍然存在 有什么建议么 您安装了 OpenSSL 开发库吗 我必须安装openssl devel例如 在 CentOS 上 在
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • 如何使用 jira-python 设置 fixVersions 字段

    我正在尝试使用 jira python 模块 http jira python readthedocs org en latest 更新现有的 JIRA 具体来说 我正在尝试设置问题的fixesVersion 列表 我已经尝试了一段时间但没
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 从 Python 中编译的正则表达式中提取命名组正则表达式模式

    我有一个 Python 正则表达式 其中包含多个命名组 但是 如果先前的组已匹配 则可能会错过与一组匹配的模式 因为似乎不允许重叠 举个例子 import re myText sgasgAAAaoasgosaegnsBBBausgisego
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • django 组合对两个不同基本模型的查询

    我有两个不同的查询集 我想将两个查询集合并 q1 tbl nt 123 objects values list id value geometry filter restriction height exclude condition id
  • 在 Tensorflow 2.0 中的简单 LSTM 层之上添加 Attention

    我有一个由一个 LSTM 和两个 Dense 层组成的简单网络 如下所示 model tf keras Sequential model add layers LSTM 20 input shape train X shape 1 trai
  • 使用 PowerShell 检查 AD 中是否存在组

    我想为该组创建代码来检查该组是否存在 但是 我无法开始工作 因为它成功地将用户和组的部分成员仅添加到一个组中 而不是其他组 因为我设法在活动目录中创建一个组并从 csv 中读取 这是我的代码和结果 似乎在成功添加用户并添加组成员后我总是收到
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐

  • Google 我的商家 API 发现网址不起作用

    我有一段 Python 代码 直到几周前 2021 年 10 月 仍在与 Google My Business API 配合使用 discovery url https developers google com my business s
  • 从网站获取数据的vba代码

    我是这个网站和 VBA 编程的新手 我遇到了一个问题 我必须从中获取数据这一页 http www kieskeurig nl zoeken index html q 4960999543345 我需要有超链接网址Check Rates 10
  • 将三个列表合并到一个字典中

    我需要将三个列表合并到一本字典中 这些列表来自读取我格式化的 txt 文件 以下是该文件的片段 maker Horsey Ford Overland Scripps Booth year 1899 1909 1911 1913 model
  • 使用 .htaccess 在 HTTP 和 HTTPS 之间正确切换

    我们有一个购物网站 托管在共享主机 Mediatemple Gridserver 上 网站的某些部分需要使用 HTTPS 结帐等 但其余部分应使用 HTTP 有谁知道我们如何始终强制对特定 URL 正确使用 HTTP HTTPS 我们已经让
  • SQL 查询返回与同一表的另一列中的精确值匹配的单个值

    Table Dummy Colum1 Colum2 219 217 219 218 228 218 228 225 229 218 229 220 我需要结果集 其中如果用户在 where 子句中提供的数字应该与其计数示例完全匹配 如果用户
  • 使用主干渲染引导模式

    我认为代码可以更好地解释我的问题 风景 App Views ErrorModal Backbone View extend template window template errorModal render function this e
  • Knockout.js、映射插件和 moment.js - 格式化/映射 json 日期

    我将 Knockout js 与映射插件一起使用 我正在获取一些 json 数据并使用映射插件将其映射到我的 html 中 json 数据中是 json 格式的日期 我需要使用映射插件将其映射到 html 中 是否可以使用 moment j
  • iOS - 异步图像下载

    我正在编写一个应用程序 它将在 UIImageView 中显示在我的服务器上找到的图像 我需要一些能够异步下载图像并缓存它的东西 同时将其放入 UIImageView 中 当我按下按钮时 下载也需要能够取消 谁能指出我可以做到这一点的方向吗
  • 为什么 JVM 同时具有“invokespecial”和“invokestatic”操作码?

    两条指令都使用静态而不是动态调度 似乎唯一的实质性区别是invokespecial始终将一个对象作为其第一个参数 该对象是分派方法所属类的实例 然而 invokespecial实际上并没有把物体放在那里 编译器负责通过在发出之前发出适当的堆
  • 视图“~/Views/Login/Login.aspx”必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl

    因此 我在 ASP NET mvc2 解决方案上遇到此错误 该解决方案曾经工作正常 我必须安装 Visual Studio 2012 但磁盘空间不足 因此必须手动卸载一些 Visual Studio 2010 功能 但目前看来并非完全必要
  • 嵌套的可分割对象不读取

    我正在尝试打包一个包含一些 string int 变量和一个对象变量的对象 字符串和整数可以工作 但嵌套对象不行 我知道我也必须将其打包 但我显然做错了 在我的嵌套类中 writeToParcel方法被调用 我检查Log d 调用 但是cr
  • Javascript:如何实现异步函数队列(无需库)

    我一直在搜索谷歌和SO 但由于某种原因我很难解决这个问题 只是强调一下 我不想加载像 JQuery 这样的库 因为我不需要它的大部分内容 当我could使用动画库 我已经构建了我自己需要的几个函数 其中一些甚至不是您在库中找到的标准动画 所
  • 用于 SQL 更新语句的 Java 单工作线程

    我正在开发一个基于 Java 的服务器 其中有多个线程 每个连接的用户一个线程 一些额外的线程 会涉及到一些数据库连接 所以我在想服务器每次创建一个SELECT查询数据库时 它将为此启动一个新线程 以防止当前线程阻塞 我计划为此使用连接池
  • 当我尝试打开我的网络应用程序(在本地主机上运行)时,Heroku 给出了 503

    我正在尝试部署到heroku 但即使它在本地主机上运行 也会得到503 我很好奇我的服务器是否设置正确 因为我是编程新手 我希望任何人都可以为我指出正确的方向 即在哪里查找或提供建议 因为我在谷歌上花费了无数个小时 跨越了几周的时间 我的主
  • 如何在C中访问正确的全局变量?

    假设我在 main c 中有一些全局变量 GLOBAL 但我的 main c 有一个 include other h 但 other h 也有全局变量 GLOBAL 当我在 main c 中写 GLOBAL 时 如何让编译器知道我的意思是哪
  • 附加不同 Promise 链时 JavaScript Promise 的执行顺序

    我想检查一下promise对象通过创建一个promise并传递给其他人并让其他人附上then到它 输出与我的预期相去甚远 我不明白它是如何执行的 const wait time gt return new Promise res rej g
  • 如何禁用 jQuery 日期选择器中的月份选择?

    我正在尝试禁用允许用户更改月份的左 右按钮 我已经删除了月份的下拉列表 但无法删除按钮 date datepicker changeMonth false changeYear false dateFormat dd mm yy durat
  • 适合所有人的 vsixmanifest:VS 2010、2012 和 2013

    我在 VS2013 下使用 VSIX 清单设计器 我已经添加微软VisualStudio专业版产品标识符和 10 0 13 0 安装目标的版本范围 尽管如此 我仍然没有将 VS2010 Professional 视为可用的安装目标 sour
  • 如何正确阅读EcmaScript规范

    我对 JavaScript 二进制逻辑运算的 它是如何工作的 知识感兴趣 但我陷入了步骤解释 这就是规格的描述 12 13 3 https www ecma international org ecma 262 8 0 index html
  • 使用 Dask 处理大型压缩 csv 文件

    设置是我有八个大的 csv 文件 每个 32GB 每个文件都用 Zip 压缩为 8GB 文件 我无法使用未压缩的数据 因为我想节省磁盘空间 但没有剩余 32 8GB 空间 我无法加载一个文件 例如pandas因为它不适合内存 我认为 Das