扫码阅读
手机扫码阅读

Pandas 与 PySpark 强强联手,功能与速度齐飞!

85 2024-10-16

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Pandas 与 PySpark 强强联手,功能与速度齐飞!
文章来源:
数据STUDIO
扫码关注公众号

概要

Python的数据处理库pandas虽然功能强大,但面临着无法处理超过单机内存的大数据集和处理速度慢的问题。为此,在Apache Spark 3.2版本中引入了新的Pandas API,该API集成了pandas的大多数功能,并利用PySpark在后台使用Spark来处理数据,使得用户可以在熟悉的pandas接口下,享受Spark的分布式数据处理能力。

Spark与Pandas的结合

Koalas项目起初旨在让用户能够在Spark上使用Pandas,现在已经被合并到PySpark中。这意味着现在可以直接在Spark上运行Pandas代码,通过简单更改import语句(import pyspark.pandas as ps),就可以立即使用PySpark,无需复杂的学习过程。这允许用户在使用小数据和大数据,单机和分布式环境时,使用相同的代码库,极大地提高了Pandas代码在Spark分布式框架上的运行速度。

使用Spark上的Pandas API

在Spark上使用Pandas API时,需要注意标识使用的是Spark的分布式DataFrame(pyspark.pandas.frame.DataFrame)还是Pandas的单机DataFrame(pandas.core.frame.DataFrame)。用户可以轻松地在Pandas和Pandas-on-Spark之间转换DataFrame。

数据类型和函数的变化

在Pandas-on-Spark和Pandas之间转换DataFrame时,数据类型会自动匹配合适的类型。而在使用Pandas-on-Spark与Spark函数时,最大的区别在于import语句。

性能优化

Spark的优化器Catalyst对性能有显著提升,例如通过识别过滤器进行智能数据过滤,应用基于磁盘的连接,而Pandas则倾向于在每一步将所有数据加载到内存中。

注意事项

在使用Spark上的Pandas API时,应避免Shuffle操作和在单个分区上的计算,不要使用重复的列名,以及尽量使用默认索引。虽然Spark上的Pandas API未实现某些API,但建议尽可能地直接使用该API。

写在最后

Spark上的Pandas API的出现,使得Pandas在处理大数据时速度大为提高,同时降低了从Pandas迁移到Spark的学习曲线,更允许将单机计算和分布式计算合并在同一代码库中。

想要了解更多内容?

查看原文:Pandas 与 PySpark 强强联手,功能与速度齐飞!
文章来源:
数据STUDIO
扫码关注公众号