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

相关推荐
TDengine (老段)几秒前
TDengine 选择函数 Max() 用户手册
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
驾驭人生9 分钟前
Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
数据库·mysql·.netcore
GanGuaGua21 分钟前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
xhbh66629 分钟前
不止是DELETE:MySQL多表关联删除的JOIN语法实战详解
数据库·mysql·程序员·mysql删除语句
lsnm30 分钟前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
多恩Stone41 分钟前
【3DV 进阶-2】Hunyuan3D2.1 训练代码详细理解下-数据读取流程
人工智能·python·算法·3d·aigc
不掰手腕44 分钟前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
MAGICIAN...1 小时前
【Redis五种数据类型】
数据库·redis·缓存
xiaopengbc1 小时前
在 Python 中实现观察者模式的具体步骤是什么?
开发语言·python·观察者模式