Pandas 与 PySpark 强强联手,功能与速度齐飞!
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
概要
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的学习曲线,更允许将单机计算和分布式计算合并在同一代码库中。
想要了解更多内容?
点击领取《Python学习手册》,后台回复「福利」获取。『数据STUDIO』专注于数据科学原创文章分享,内容以 Python 为核心语言,涵盖机器学习、数据分析、可视化、MySQL等领域干货知识总结及实战项目。