【短文】Spark危机与机遇杂谈
MLFlow
昨天发了一篇文章Spark团队新作MLFlow 解决了什么问题 描述了我对MLFlow的一些看法,现在想来,Spark团队是非常聪明的,AI同学都有自己的社区,自己的生态,Spark则是在工程研发群体具有很大的影响力,而在AI领域并没有太大号召力。所以它其实是没办法通过一个颠覆性的东西去让AI同学转移过来的,而MLFlow并没有改变AI同学的原有习惯和流程,他提供了一些辅助工具和标准,解决了一些痛点,慢慢渗透,从而实现慢慢转型,当然,最后也完全可能也掀不起什么波澜。
Spark光鲜背后的挑战
第一个便是AI浪潮崛起,对Spark即是危机也是机遇。DB现在一直宣称自己是一家AI公司,不过你可能会好奇,为什么Spark背后的DB公司不好好固守数据处理方面的优势,而不断尝试转型AI呢? 刨去整个资本市场和技术浪潮不谈,其实最大的问题是未来必然是AI框架倒推数据处理框架。AI框架很可能衍生出适合自己的数据处理框架,比如tensorflow,对tf.data 进行了很大的增强,方便做数据处理。如果Spark不主动出击,未来会很被动。
第二个就是流式了,随着流式时代的来临, 而在此之前Spark 在流式领域一直不紧不慢,加固在批处理方面的优势的同时也丧失了流领域的先机,很多公司(尤其是云公司,比如阿里云,华为等)都转向flink。 这也使得Spark在传统数据处理领域不断遭受新的挑战。(我在16年的时候,就不断强调流式计算的重要性,比如这篇文章数据天生就是流式的,为此还专门建立了一个专题,感兴趣的同学可以看看)
步履日渐沉重
Spark还提了一个 Hydrogen 设计,从而使得Spark能够更好的结合深度学习框架。从某种角度而言是顺应形势,但其实是在转型AI的情况下不得已而为之。
依然是王者
Spark 依然是我用过最好用的工具,依然有最好的生态。基于它之上,做很多事情会变得很轻松。
后话
其实我觉得和AI进行适配,不一定是朝着整合AI框架的方向发展。前面我们提到未来必然是AI框架倒推数据处理框架,只要让Spark能够更好的为AI做数据预处理,成为事实标准,并且适配主流AI框架,那么Spark必然会有一个新的护城河。最简单的例子,Spark 2.3 已经支持图片处理了,但是其实还是蛮多问题的,是可以做的更好的,比如是否提供一些方法直接把一张图片读取成一个hwn的张量(这种是可以直接喂给常见的深度学习算法的)。另外能不能支持张量输出? 总之最好的策略其实是压缩AI框架的边界,保证Spark在数据处理方面的绝对垄断地位。我在实际使用中发现,很多数据预处理,Spark目前做起来是不方便的,非得用AI算法库的函数。
当然,还有就是加速流的发展,并且加大这方面的宣传和投入,确定在数据处理第二阶段依然能够保持领先优势。