如何将 dask 数据帧保存到与 dask 调度程序/工作人员相同的机器上的镶木地板?

2024-01-02

我试图通过 Dask Dataframe 保存到与 dask 调度程序/工作人员所在的同一台机器上的镶木地板。然而,我在这期间遇到了麻烦。

我的 Dask 设置: 我的 python 脚本在本地计算机(笔记本电脑 16 GB RAM)上执行,但该脚本为在远程计算机(具有 400 GB RAM 用于并行计算的服务器)上运行的 Dask 调度程序创建 Dask 客户端。 Dask 调度程序和工作线程都位于同一服务器上,因此它们都共享相同的文件系统,可供本地使用。由于我团队的所有成员都使用此远程 Dask 调度程序,因此我们正在处理的文件也位于同一服务器上,从而为所有成员提供通过同一 Dask 集群对所有文件的公共访问。

我努力了:

# This saves the parquet files in a folder on my local machine.
ddf.to_parquet(
    '/scratch/dataset_no_dalayed', compression='brotli').compute()

# This delayed call of `ddf.to_parquet` saves the Dask Dataframe chucks
# into individual parquet files (i.e. parts) in the given folder.
# However, I want to persist the Dask dataframe in my workflow, but this
# fails as seen below.
dask.delayed(ddf.to_parquet)(
    '/scratch/dataset_dalayed', compression='brotli').compute()

# If the Dask dataframe is persisted, the `to_parquet` fails with
# a "KilledWorker" error!
ddf = client.persist(ddf)
dask.delayed(ddf.to_parquet)(
    '/scratch/dataset_persist/', compression='brotli').compute()

# In the example below, I can NOT save the Dask dataframe.
# Because the delayed function makes the Dask dataframe
# to a Pandas dataframe on runtime. And this fails as the path is a
# folder and not at file as Pandas requires!
@dask.delayed
def save(new_ddf):
    new_ddf.to_parquet('/scratch/dataset_function/', compression='brotli')

save(ddf).compute()

如何正确执行此操作?


通常要将 dask 数据框保存为 parquet 数据集,人们会执行以下操作:

df.to_parquet(...)

从您的问题来看,您的工作人员可能并非都有权访问 NFS 或 S3 等共享文件系统。如果是这种情况,并且您存储到本地驱动器,那么您的数据将分散在各种计算机上,而没有明显的方法将它们收集在一起。原则上,我鼓励您避免这种情况,并投资共享文件系统。它们在进行分布式计算时非常有帮助。

如果你不能做到这一点,那么我个人可能会并行写入本地驱动器,然后将它们传输回一台机器。

如果您的数据集足够小,那么您也可以调用.compute返回本地 Pandas 数据帧,然后使用 Pandas 写入

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

如何将 dask 数据帧保存到与 dask 调度程序/工作人员相同的机器上的镶木地板? 的相关文章

随机推荐

  • bash 脚本中的 if 条件取反

    我一直试图否定以下命令 wget q tries 10 timeout 20 spider http google com if eq 0 then echo Sorry you are Offline exit 1 如果我连接到互联网 则
  • 如何使用 Spring Boot 和 Spring Security 保护 REST API 的安全?

    我知道保护 REST API 是一个被广泛评论的话题 但我无法创建一个满足我的标准的小型原型 并且我需要确认这些标准是现实的 如何保护资源以及如何使用 Spring 安全性有很多选择 我需要澄清我的需求是否现实 我的要求 基于令牌的身份验证
  • 如何获取写入的记录数(使用DataFrameWriter的保存操作)?

    使用spark保存记录时有没有办法获取写入的记录数 虽然我知道它目前不在规范中 但我希望能够执行以下操作 val count df write csv path 或者 能够对步骤的结果进行内联计数 最好不使用标准累加器 将 几乎 同样有效
  • iOS 10 中 UICollectionView 预取数据源?

    目的是什么prefetchDataSourcesiOS 10 中引入 我刚刚在 XCode 8 GM Seed 中运行一个项目并开始出现错误 MessagesExtension 17902 1238603 Assertion failure
  • 在Python中打印字符串会在字符串之前打印“u”吗?

    打印列表中元素之前的 u 我没有在代码中输入 u hobbies prompt user three times for hobbies for i in range 3 hobby raw input Enter a hobby hobb
  • 使用 IDE 运行 Spring-boot 的 main

    我有一个 spring boot 应用程序需要 可作为 Servlet 容器中的战争进行部署 可通过 mvn spring boot run 运行 我还希望能够通过右键单击 IDE Eclipse 或 IntelliJ IDEA Commu
  • NSFilePresenter 方法永远不会被调用

    我正在尝试编写一个简单的 玩具 程序 它使用 NSFilePresenter 和 NSFileCoordinator 方法来监视文件的更改 该程序由一个加载 硬编码 文本文件的文本视图和一个用于保存文件更改的按钮组成 我的想法是 我有两个实
  • 在 Windows Mobile 应用程序中播放 YouTube 视频

    我正在开发一个用于 Windows Mobile 6 或可能 5 的应用程序 用于播放 YouTube 视频 嗯 它should播放 YouTube 视频 并控制 查询播放器的状态变化 当前帧 时间等 在网上搜索了相当长一段时间 以及一些尝
  • Hibernate 验证器中的自定义消息密钥不适用于 message.property

    我正在研究 Spring Boot 我使用 Hibernate Validator 来验证我的 bean 我添加了一个自定义键 NotEmpty注释 并在 message properties 中添加键 值对 但它没有从 message p
  • Laravel 4:如何向 DB::table 添加范围?

    使用 Eloquent 模型添加范围很容易 public function scopeMyScope query Do stuff to that query 但如何添加范围DB table 我使用此查询来获取页面浏览量 views DB
  • 如何在 Dart 中只替换字符串中的一个字符?

    我试图仅替换字符串 dart 中的一个字符 但找不到任何有效的方法 由于字符串不是 Dart 中的数组 我无法通过索引直接访问字符 并且没有内置函数可以做到这一点 这样做的有效方法是什么 目前我正在这样做 如下所示 List
  • 对话框过渡效果

    I am currently working on the transition effects for my dialog Please refer to the image below 我的对话框的入口动画应该是从上到中 而退出动画应该
  • 重写 LINQ 扩展方法

    有没有一种方法可以覆盖扩展方法 提供更好的实现 而无需显式转换为它们 我正在实现一种数据类型 它能够比默认扩展方法更有效地处理某些操作 但我想保留 IEnumerable 的通用性 这样任何 IEnumerable 都可以传递 但是当我的类
  • 如何将脚本添加到 jqgrid 行上的自定义按钮?

    我正在尝试处理 jqgrid 中自定义按钮的点击 我显示了按钮 但是当单击它们时 我的函数不会运行 如果我单击 jqgrid 外部的按钮 脚本就会运行 jqgrid会消耗按钮点击吗 不确定我缺少什么或不理解什么 这是网格 我没有重新加载整个
  • 更改 NSTableView 的边框颜色

    我可以改变颜色吗NSTableView s border 指针处的灰线 谢谢 你需要子类化你的NSScrollView NSScrollView通常不进行任何绘图 并且可能以这种方式与其子视图进行奇怪的交互 我建议放一些类似的东西 void
  • 通过 JSON/AJAX 更新 HTML

    自从我听说 JSON 以来 我一直在我的 Rails 应用程序中使用 JSON 来处理 AJAX 功能 因为使用 RJS 渲染 HTML 感觉 错误 因为它违反了 MVC 我从事的第一个 AJAX 密集型项目最终有 20 30 个控制器操作
  • 通过 Perl 和 Net::OpenID::Consumer 对 Google Apps 进行 OpenID 身份验证失败

    我在 Google 的应用程序集成支持论坛上提出了这个问题 但得到的回复为零 也许这里有人可以帮助引导我走向正确的方向 我正在尝试将 Perl 应用程序与 Google Apps 集成 但在 OpenID 身份验证方面遇到了一些问题 我一直
  • 如何将 C String 转换为 NSString?

    我已经能够找到类似的方法 NSString stringWithCString encoding 但当 cstring 是指针时 它们似乎表现不佳 首先 不要使用initWithCString 它已被弃用 有几种方法可以做到这一点 cons
  • Documentum Rest 服务 - 信任来自 Java 客户端的 SSL 证书

    我的需要是接受来自独立 Java 应用程序 将捆绑为 JAR 的 REST Web 服务 URL https dctm rest 上启用的 SSL 证书 据我所知 最好的方法是使用 Keytool 创建 KeyStore TrustStor
  • 如何将 dask 数据帧保存到与 dask 调度程序/工作人员相同的机器上的镶木地板?

    我试图通过 Dask Dataframe 保存到与 dask 调度程序 工作人员所在的同一台机器上的镶木地板 然而 我在这期间遇到了麻烦 我的 Dask 设置 我的 python 脚本在本地计算机 笔记本电脑 16 GB RAM 上执行 但