PySpark 中的高效列处理

2023-11-29

我有一个包含大量列(> 30000)的数据框。

我用它填充1 and 0基于第一列,如下所示:

for column in list_of_column_names:
  df = df.withColumn(column, when(array_contains(df['list_column'], column), 1).otherwise(0))

然而这个过程需要很多时间。有没有办法更有效地做到这一点?有些事情告诉我列处理可以并行化。

Edit:

输入数据示例

+----------------+-----+-----+-----+
|  list_column   | Foo | Bar | Baz |
+----------------+-----+-----+-----+
| ['Foo', 'Bak'] |     |     |     |
| ['Bar', Baz']  |     |     |     |
| ['Foo']        |     |     |     |
+----------------+-----+-----+-----+

除了非常宽的数据之外,您的代码没有任何具体错误:

for column in list_of_column_names:
    df = df.withColumn(...)

只生成执行计划。

一旦评估结果,实际的数据处理将并发和并行化。

然而,这是一个昂贵的过程,因为它需要O(NMK)N 行的运算,M列和K列表中的值。

此外,对非常广泛的数据执行计划的计算成本非常昂贵(尽管成本在记录数量方面是恒定的)。如果它成为限制因素,你可能会更好RDDs:

  • 使用对列数组进行排序sort_array功能。
  • 将数据转换为RDD.
  • 使用二分搜索对每一列应用搜索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySpark 中的高效列处理 的相关文章

随机推荐

  • 打印斐波那契数列

    我正在尝试编写一个简单的Python 程序 它应该返回一个返回连续斐波那契数的闭包 def fibGen n 1 0 n 2 0 n 1 def fib if n 1 0 and n 2 0 n 1 1 return n else n n
  • RServe共享库代码

    RServe 生成 的进程是否有可能共享一些曾经加载到内存中的通用库 想象一下 我需要在 100 个不同的 RConnection 上同时执行以下代码 library libraryOfSize40MB fun 这意味着我需要大约 3 9G
  • 在oracle标准版中使用什么功能,例如在oracle企业版中使用分区功能

    我只能使用oracle标准版 oracle标准版的功能提供了分区之类的功能 有没有像MYSQL中那样的逻辑合并表的概念 唯一想到的就是为每个 分区 建立一个真正的表 然后将它们全部联合起来 但是 每次添加或删除 分区 时 您都必须重建视图
  • 如何在bash中将字符串的长度存储在变量中?

    我正在用这个guide作为参考 我可以运行命令来查找字符串的长度 例如 expr length monkey brains 如预期返回 13 然而 我在将结果存储在变量中时遇到了麻烦 比如说一个名为 hi 的变量 首先我尝试直接分配 hi
  • 检查字符串匹配中的多个单词以进行 r 中的文本搜索

    目前我有一个适用于单字搜索的代码 我们可以搜索多个单词并将这些匹配的单词写入数据框中吗 为了澄清 请参阅此post 这是akrun s适用于一个单词的解决方案 这是代码 library pdftools library tesseract
  • 在curl_easy_perform之后接收数据

    我有以下问题 如何编写通过 http response 返回的数据char 缓冲 我发现了几种方法 use CURLOPT WRITEDATA or CURLOPT WRITEFUNCTION but CURLOPT WRITEDATA需要
  • MySQL GROUP BY 来自不同表的多个列

    我有以下表格布局 Table Data Field Type type enum type b type a type id int 11 unsigned data bigint 20 unsigned Table A and B Fie
  • PYTHONPATH 中到底应该设置什么?

    我正在为一个 python 项目工作的其他开发人员编写一个设置文档 并且我一直在阅读PYTHONPATH环境变量 我正在查看我当前的开发系统 并认为我有一些设置错误 导致我的 IDE IntelliJ 在查找 python 库时行为不正确
  • 基于条件的多个箱线图

    我有一个包含两列的数据框 功率栏代表系统的功耗 component status 列根据组件关闭或打开的时间将数据分为两部分 当值为 153 时 该组件为 ON 当值为 150 时 该组件为 OFF 我正在寻找的结果是有一个包含三个箱线图的
  • Java 变量值作为新变量名

    我想知道在 Java 中是否有任何方法可以为新变量指定一个名称 该名称是另一个变量的值 下面的代码是我正在尝试做的事情的一个无效示例 int a 0 while true String a newValue a a 1 or String
  • 无法打印空手道功能文件中的标题

    我正在使用空手道 https github com intuit karate 进行一些 API 测试并使用无效标头进行测试 我想在调试时打印标题 以确保一切都设置正确 这就是我设置并尝试打印的方式 但没有任何效果 我可以在文档中找到有关它
  • 具有 3 个按钮的 UIAlertView 在横向模式下隐藏消息

    我的 UIAlertView 有一条消息和 3 个按钮 我的问题是警报视图通常以纵向显示 但在横向模式下隐藏消息 如下图所示 如何让消息出现 提前致谢 我也遇到同样的问题 但我通过一个小小的改变解决了这个问题 喜欢添加 n n 在 的最后T
  • 如何创建系统还原点? [复制]

    这个问题在这里已经有答案了 安装paint net 我发现了一个字符串正在创建系统还原点 我猜它正在为卷影服务创建一个还原点 不是吗 我不知道 如果我是对的 我该如何在我的应用程序中执行此操作 如果有合适的 Apis 请告诉我 您可以使用系
  • .NET Framework 依赖项的 SAP Crystal Reports 运行时引擎有哪些?

    我正在尝试在全新的 Microsoft Windows Server 2012 R2 x64 虚拟机上安装适用于 NET 框架的 SAP Crystal Reports 运行时引擎 安装因以下错误而停止 错误 1904 模块 C Progr
  • 哪个开源项目使用 castle activerecord?

    除了演示之外 您还能建议任何使用 castle activerecord 进行代码研究的开源项目吗 上面有不少谷歌代码 他们之中有一些是 酒窖经理 博客引擎先生 故事诗 盖亚冲刺 攻占城堡 Issuetracker Net
  • PyCrypto 和 GMP 库未找到错误 [Mac OS 10.6.3]

    我正在尝试安装pycrypto 2 1 0但尝试做 python setup py build 引出 running build running build py running build ext warning GMP library
  • JDK8 的 WebService 客户端生成错误

    我需要在我的项目中使用 Web 服务 我使用 NetBeans 因此右键单击我的项目并尝试添加新的 Web 服务客户端 上次我检查过 这是创建 Web 服务客户端的方法 但它导致了一个断言错误 说 java lang AssertionEr
  • 如何从Linux内核空间访问物理地址?

    我正在研究树莓派板 是否可以直接访问GPIO物理地址 从 Linux 内核空间使用 inb outb 如果是的话怎么办 GPIO寄存器地址链接 第90页http www raspberrypi org wp content uploads
  • 带有 Ruby on Rails 和 OAUTH2 的 Yahoo API

    我有一个 RoR 网站 可以从证券交易所获取数据 并且我通过 Yahoo API 使用 Yahoo 的财务表 我需要授权才能获得对 YQL 的完全访问权限 这要求我使用 Oauth2 我需要帮助获取对 Yahoo 的 OAuth 访问权限
  • PySpark 中的高效列处理

    我有一个包含大量列 gt 30000 的数据框 我用它填充1 and 0基于第一列 如下所示 for column in list of column names df df withColumn column when array con