主页 > 新闻资讯 > Pyspark实战指南:Spark Python实现原理解析

Pyspark实战指南:Spark Python实现原理解析

作者:张老师 浏览次数: 2020-02-19 15:17
Spark在设计之初,考虑到更广泛的编程支持,提供了多种语言的高级API,因此除了自身的编程语言Scala,Spark框架还支持Java、Python等语言来进行编程。而以Python编程的一支,随着发展也形成了Pyspark。今天我们从Pyspark实战指南出发,来聊聊Spark Python实现原理。

Python语言在技术领域,尤其是数据科学领域,一直以来都占据着比较重要的位置,因此数据科学研究方向的工程师们,往往更青睐也更习惯于用Python。基于Python语言的Spark编程,也获得了PySpark这一称呼。

Pyspark实战指南

PySpark的实现原理,包括PySpark的多进程架构;Python端调用Java、Scala接口;Python Driver端RDD、SQL接口;Executor端进程间通信和序列化;Pandas UDF等几个方面。

PySpark采用了Python、JVM进程分离的多进程架构,在Driver、Executor端均会同时有Python、JVM两个进程。

当通过spark-submit提交一个PySpark的Python脚本时,Driver端会直接运行这个Python脚本,并从Python中启动JVM;而在Python中调用的RDD或者DataFrame的操作,会通过Py4j调用到Java的接口。

在Executor端恰好是反过来,首先由Driver启动了JVM的Executor进程,然后在JVM中去启动Python的子进程,用以执行Python的UDF,这其中是使用了socket来做进程间通信。

通过spark-submit提交PySpark作业后,Driver端首先是运行用户提交的Python脚本,然而Spark提供的大多数API都是Scala或者Java的,那么就需要能够在Python中去调用Java接口。这里PySpark使用了Py4j这个开源库。当创建Python端的SparkContext对象时,实际会启动JVM,并创建一个Scala端的SparkContext对象。

在PySpark中,继续初始化一些Python和JVM的环境后,Python端的SparkContext对象就创建好了,它实际是对JVM端接口的一层封装。和Scala API类似,SparkContext对象也提供了各类创建RDD的接口,和Scala API基本一一对应。

关于Pyspark实战指南,今天我们主要从实现原理方面做了简单的分享,这部分的知识首先需要从理论上去理解和消化,然后加之以实操性的联系,才能更快地掌握其中的技能点。成都加米谷大数据,大数据知识分享,大数据培训班课程,近期开班信息可联系客服了解!
热点排行
推荐文章
立即申请>>