导读
按照前文所述,本篇开始Pandas和Spark常用数据处理方法对比系列。数据处理的第一个环节当然是数据读取,所以本文就围绕两个框架常用的数据读取方法做以介绍和对比。
数据读取是所有数据处理分析的第一步,而Pandas和Spark作为常用的计算框架,都对常用的数据源读取内置了相应接口。总体而言,数据读取可分为从文件读取和从数据库读取两大类,其中数据库读取包含了主流的数据库,从文件读取又区分为不同的文件类型。基于此,本文首先分别介绍Pandas和Spark常用的数据读取API,而后进行简要对比分析。
01 Pandas常用数据读取方法
Pandas内置了丰富的数据读取API,且都是形如pd.read_xxx格式,通过对pd顶级接口方法进行过滤,得到Pandas中支持的数据读取API列表如下:
过滤pandas中以read开头的方法名称
按照个人使用频率,对主要API接口介绍如下:
在以上方法中,重点掌握和极为常用的数据读取方法当属read_sql和read_csv两种,尤其是read_csv不仅效率高,而且支持非常丰富的参数设置,例如支持跳过指定行数(skip_rows)后读取一定行数(nrows)的数据,就是这个小技巧使得曾经小内存的我也能得以处理大数据,着实欣喜!
02 Spark常用数据读取方法
与Pandas类似,Spark也提供了丰富的数据读取API,对于常用的数据读取方法也都给予了非常好的支持。这里以Scala Spark为例,通过tab键补全命令查看常用的数据读取方法如下:
通过spark-shell的tab键补全得到spark.read.的系列方法
可以明显注意到Spark的数据读取API与Pandas接口名称的一个显著区别是:Spark采用二级接口的方式,即首先调用read属性获取读接口的类,然后再区分数据源细分为各种类型;而Pandas则是直接提供了read_各数据类型的API。仍然按照使用频率来分:
如果说Pandas读取数据库是最为常用的方法,那么Spark其实最为常用的当属Parquet,毕竟Parquet文件与Spark等同为Apache顶级项目,而且更具大数据特色,称得上是大数据文件存储的业界规范!
03 小结
整体来看,Pandas和Spark在数据读取方面都提供了丰富的接口,支持的数据源类型也大体相当。但对参数支持和易用性方面,Pandas对数据库和csv文件相对更加友好,而Spark与Parquet文件格式则更为搭配。虽然同为数据计算框架,但Pandas是单机计算模式,而Spark则是分布式计算,所以不同的数据量级也自然决定了数据源的侧重点不同,本无高下之分,只能说各有千秋。
最后,感谢清华大学出版社为本公众号读者赞助《Scala和Spark大数据分析 函数式编程、数据流和机器学习》一本,截止下周一(3月22日)早9点,公众号后台查看分享最多的前3名读者随机指定一人。
推荐语:本书在简要介绍Scala语言理解“面向对象”和“函数式编程”等理念的基础上,重点围绕Spark的核心抽象概念以及Spark SQL、Spark Streaming和Spark GraphX等组件来分析结构化和非结构化数据,开发出具备可伸缩性和容错能力的流式应用。通过本书,你将学会用Spark来快速完成大数据分析,对于学习Scala和Spark将会非常有帮助。