当前位置: 首页 > article >正文

Polars:从 Apache Spark 过渡指南

Polars:从 Apache Spark 过渡指南

如果您已经熟悉 Apache Spark,那么在使用 Polars 时需要注意一些关键区别。以下是一些典型的 Spark 操作及其对应的 Polars 实现。

1. 基于列的方法 vs. 基于行的方法

Spark DataFrame 类似于一个行的集合,而 Polars DataFrame 更接近于一个列的集合。这意味着你可以在 Polars 中以 Spark 中不可能的方式组合列。

案例 1: 合并 head 与 sum

在 Polars 中,你可以写出以下语句:

df.select([
    pl.col("foo").sort().head(2),
    pl.col("bar").filter(pl.col("foo") == "d").sum()
])

该代码段输出:

shape: (2, 2)
┌─────┬─────┐
│ foo ┆ bar │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ a   ┆ 9   │
├╌╌╌╌╌┼╌╌╌╌╌┤
│ b   ┆ 9   │
└─────┴─────┘

foobar 上的表达式是完全独立的。由于 bar 上的表达式返回一个单一的值,这个值在 foo 表达式输出的每个值中都会重复,但是 ab 与产生 9 没有关系。
要在 Spark 中做类似的事情,你需要单独计算总和,并将其作为字面值返回。

案例 2: 合并两个 head

在 Polars 中,你可以在同一个 DataFrame 上结合两个不同的 head 表达式,只要它们返回相同数量的值。

df.select([
    pl.col("foo").sort().head(2),
    pl.col("bar").sort(reverse=True).head(2),
])

该代码段输出:

shape: (3, 2)
┌─────┬─────┐
│ foo ┆ bar │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ a   ┆ 5   │
├╌╌╌╌╌┼╌╌╌╌╌┤
│ b   ┆ 4   │
└─────┴─────┘

同样,这里的两个 head 表达式是完全独立的,a5b4 的配对纯粹是表达式输出的两列并列的结果。
为了在 Spark 中完成类似的工作,你需要生成一个人工的 key 使你能够以相同的方式连接这些值。
以上代码示例展示了如何将 Spark 中的常见操作转换为 Polars。更多详细信息和高级用法,请访问原网页。


http://www.kler.cn/news/339397.html

相关文章:

  • 探索杨辉三角形的奥秘:C#实现
  • Python | Leetcode Python题解之第464题我能赢吗
  • 【什么是回调机制?一篇文章掌握回调机制及思想】
  • 在虚拟机里试用了几个linux操作系统
  • 网络编程(14)——基于单例模板实现的逻辑层
  • 收银台实现iframe跨页面调用函数的方法——未来之窗行业应用跨平台架构
  • 《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-07-通信网络构建案例分析
  • 毕设 深度学习语义分割实现弹幕防遮(源码分享)
  • 容器管理工具Docker
  • List子接口
  • C语言 | 第十一章 | static 日期函数 数学函数
  • 活动邀请 | SonarQube×创实信息即将亮相2024 GOPS全球运维大会-上海站,分享代码质量与安全提升策略
  • JavaScript函数基础(通俗易懂篇)
  • 【iOS】计算器仿写
  • 面试(十)
  • 三级等保对postgresql的安全要求配置
  • 《重庆师范大学学报(自然科学版)》
  • Django学习笔记十一:部署程序
  • 快速学习开源 Docker 镜像仓库 Harbor
  • HUAWEI_HCIA_实验指南_Lib1.4_配置通过Telnet登录系统