今天主要讨论个问题:Spark机器学习的本质是什么,其内部构成究竟是什么。
简单来讲,机器学习是数据+算法。算法
在Spark中作机器学习,确定有数据来源,在Spark的最底层确定是RDD封装,这个和Spark具体是什么版本没有任何关系,版本发展只不过是提供了更多高层的API而已,例如DataFrame、Dataset等,而之因此有DataFrame、Dataset,通常状况下是为了使用统一的优化引擎(抽象程度越高,优化算法和空间越大)。机器学习
RDD有一个弱点,是每一行列的数据不是可知的,使用Catalyst能够看到列的数据,有更大的优化空间。在2.0中,DataFrame做为了mlib的主要API,基于RDD的API有可能在3.0被移除掉。分布式
Spark的机器学习就是Spark平台之上的函数库。函数确定有一套内部的逻辑。函数
机器学习从算法角度而言,最原始的其实都是基于Vector和Matrix来进行计算的,也就是说RDD/DataFrame/Dataset等里面的数据从机器学习角度讲都是Vector和Matrix,而借助于RDD/DataFrame/Dataset自然分布式并行计算完成了机器学习的并行化和可扩展性等。学习
其实这和图计算的思路很是类似,图计算中数据也是存储在RDD中的,可是Spark的图计算提供了Vertices、Edges、Routing Table等对象来解析RDD中的数据,从而变成图计算可用的数据。大数据
整个过程能够用下面这个图来表示。优化
DT大数据天天晚上20:00YY频道现场授课频道68917580对象