Python金融数据挖掘与分析实战
上QQ阅读APP看书,第一时间看更新

2.10.3 PySpark

在大数据应用场景中,当我们面对海量的数据和复杂模型巨大的计算需求时,单机的环境已经难以承载,需要用到分布式计算环境来完成机器学习任务。Apache Spark是一个快速而强大的框架,可以对弹性数据集执行大规模分布式处理。通过图2-15所示的Apache Spark架构图可以非常清晰地看到它的组成。

Spark支持丰富的数据源,可以契合绝大部分大数据应用场景,同时,通过Spark核心对计算资源统一调度,由于计算的数据都在内存中存储,使得计算效率大大提高。Spark原生支持的语言是Scala,但为了丰富应用场景和满足各研发人员的语言偏好,Spark同时支持Java、Python与R。PySpark是Spark社区发布的在Spark框架中支持Python的工具包,它的计算速度和能力与Scala相似。通过PySpark调用Spark的API,配合MLlib与ML库,可以轻松进行分布式数据挖掘。

图2-15 Apache Spark架构图

MLlib库是Spark传统的机器学习库,目前支持4种常见的机器学习问题:分类、回归、聚类和协同过滤。MLlib的所有算法皆基于Spark特有的RDD(Resilient Distributed Dataset,弹性分布式数据集)数据结构进行运算。由于RDD并不能很好地满足更为复杂的建模需求,ML库应运而生。

ML库相较MLlib库更新,它全面采用基于数据帧(Data Frame)的API进行操作,能够提供更为全面的机器学习算法,且支持静态类型分析,可以在编程过程中及时发现错误,而不需要等代码运行。