Polars:从 Apache Spark 过渡指南

Polars:从 Apache Spark 过渡指南

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

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

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

案例 1: 合并 head 与 sum

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

python 复制代码
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 表达式,只要它们返回相同数量的值。

python 复制代码
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。更多详细信息和高级用法,请访问原网页

相关推荐
Petal990912几秒前
内核调试:Linux编译内核源码为deb并更新内核
linux·运维·服务器
Web项目开发1 分钟前
Mysql创建索引的SQL脚本,复制粘贴即可使用
数据库·sql·mysql
溪海莘15 分钟前
如何部署使用uv管理依赖的python项目 ?
开发语言·python·uv
我送炭你添花16 分钟前
Python与串口:从基础到实际应用——以Pelco KBD300A模拟器项目为例
开发语言·python·自动化·运维开发
晴天¥36 分钟前
Oracle如何在DBeaver上进行登录
数据库·oracle
高洁0140 分钟前
CLIP 的双编码器架构是如何优化图文关联的?(2)
python·深度学习·机器学习·知识图谱
轩轶子40 分钟前
【Macbook环境配置】Macbook设置ssh免密登陆服务器
运维·服务器·ssh
Dillon Dong41 分钟前
服务器运维:Linux 磁盘查看 & 清理常用命令
linux·运维·服务器
m0_6265352043 分钟前
快速排序学习 l方法 h方法
开发语言·python
ben9518chen1 小时前
Linux用户管理
linux·运维·服务器