在spark上训练模型的优势:
(1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用一般的Hadoop分布式计算框架,每次计算都要读 / 写磁盘以及任务的启动等工作,这回导致非常大的 I/O 和 CPU 消耗。而 Spark 基于内存的计算模型天生就擅长迭代计算,多个步骤计算直接在内存中完成.
(2)从通信的角度讲,如果使用 Hadoop分布式计算框架, 工作和任务之间由于是通过 heartbeat 的方式来进行的通信和传递数据,会导致非常慢的执行速度,正常来说会减缓机器学习的速度.spark通讯效率极高,可以解决这个问题.
目前发现的spark训练模型的劣势:
(1)配置繁琐,使用之前要先配置spark集群,scala编译器,java编译器
(2)要按照spark指定的数据格式进行训练,一般机器学习可以直接读取数据例如csv,指定特征列后进行特征处理训练,spark的训练格式要把数据里面类型,标签提前整理好
sparl.ml的功能示意图
MLlib目前支持4种常见的机器学习问题: 分类、回归、聚类和协同过滤,MLlib在Spark整个生态系统中的位置如图下图所示。这里还展示除了内置的模型之外的lightgbm的模型训练
在测试过程中,原生自带的spark.ml模型包可以正常训练