看数据与机器学习交互接口发展

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 从最早的RDD, 到编程版SQL的Data Frame, 再到标准的SQL, Spark和程序员的交互形态的发展变化, 也是整个数据行业发展的一个缩影。随着AI的发展,行业内普遍的做法是在python语言里集成了Data Frame, SQL。ML SQL则是一个颠覆者, 他希望SQL是顶级成员, 在SQL中内置Python, 并可通过集成Scala/Java对其进行扩展。

本文章由阿里云社群直播视频整理和而来。
讲师:祝威廉,资深数据架构,11年研发经验,同时维护和开发多个开源项目。

Stage1:分布式编程发展历程

1.MapReduce时代

大数据最开始的样子:MR(MR指:mapreduce,后文简称MR)在大数据领域的地位举足轻重,就不再赘述了。下面是一段使用MR编写的WordCount代码:

image.png

直观上看,这段代码粗糙,暴力且麻烦。在MR的初期,想要提交像如此简单的功能的代码,所需要的Jar包就有11个之多而且还有这么多的代码量,可想而知如果要搞一些复杂的需求与骚操作,简直是要累吐我这样的数据搬运工了。

当然我们MR的一个较大的弊端是用Java编写代码,又因为Java的表达能力相对较弱,这应该算是一个较大的短板。

MR时代我们会横向拓展机器,这是一个在当时比较新颖的理念,我们在横向拓展是并不要求机器的性能,项目初期,可以用尽量低的成本,用低性能且多数量的机器来支撑起我们的业务,也是很值得鼓吹的。当我们已现如今的知识储备与经验会看当时的想法,就会觉得它好low。就如同一个哲人曾经说过,今天的你如果没有觉得昨天的你很沙雕,那么你就没有进步。

2.Spark

技术是不断的进步的,上文我们说到MR是落后的,那么替代MR的就是我们接下来说到的Spark。用spark中的RDD(Resilient Distributed Dataset)来实现wordcount代码如下:

image.png

用了两行代码就替代了MR上面冗长的代码,简单且接近单机编程,spark都会有一个sc的入口,来进行对应的api调用。另一个优点就是不必如MR一般必须要在集群环境上进行调试没有很好地额交互性,spark是基于scala编写的,这里我们叫(spark-shell)也就可以边编写代码边调试查看效果,类似于python的notebook,给予了我们开发很大的帮助,且有了很多新的理念。spark还支持多语言编程,除了原生的scala,还支持python,Java等。

3.Ray

Ray是一个新的大数据平台:

image.png

看下上面的代码,首先init()方法会连接一个已有的集群,如果没有的话会自己启动一个集群。然后我们创建一个方法或者一个class,我们加上一个annotation标注这个方法为可以远程调用的。之后在调用的时候,其实是通过调用里面的remote方法。然后通过ray.get(futures)拉起一个多线程来跑程序。

Ray已经是非常非常接近单机编程,支持所见即所得,简单易用,原生支持python,可以很好的与AI整合,Ray为我们提供了更小的侵入性,更简单的代码实现。

蚂蚁金服提供了Java支持,可以通过Java来编写上面的代码

4.分布式发展历史总结

感性总结
1.MR/Spark 都是原生支持Java/Scala系的,Ray开始原生支持Python。

2.限制越来越少,MR要求你实现接口,Spark要求你从sparSession算子开始,Ray则只需要你定义函数/class的时候打个远程标记(另外还可以配置资源)。

3.启动延迟越来越低,可直接interpreter执行。

问题:平台变迁到底是什么东西在变化?
如下图:

image.png
image.png

基于以上图片我们可以看到一个趋势就是:Java与scala是MR与RDD的主力语言,python是AI的主力语言,大数据领域是Java与scala,AI则是python。Java与scala相对来说是面向平台,python则是面向用户。sql将会成为数据的主力。

问题:Ray是否会取代Spark吗?
首先分别了解一下这两个平台的架构:

image.png

通过对两个平台的对比分析,我们可以看出,他们两个是并列存在,目前并不存在谁取代谁的趋势。

核心总结:

1)Ray的python/java支持是并列的,互不影响。Spark的Python AP1是需要通过Java API的。

2)两者都分成了框架/应用,分布式编程系统分两个层(RDD==Ray Core)

3)Ray上的Python API自前主要面向机器学习,Java API还是面向传统的流,批等。

4)你可以基于Ray Java API实现类似现在的Flink APl,SQL执行引擎等,并且复用已有的大数据生态。

小结论:

1)两者体系结构类似。

2)Ray Core/RDD 都可以实现复杂的框架或者应用。

3)Ray可以实现Spark的所有功能,甚至实现一模一样的上层API(比如DataFrame等,甚至能复用更上一层的库比如MLL1b)。

4)Ray Core之上可以并行运行两套生态体系(Al,大数据)

那么到底能不能取代呢?理论上是可以的,但是还要看实际生态发展趋势。Ray可以做到All in one,会不会替代就要看Ray的发展了。

Stage2:Spark API交互发展历程

交互实际就是API,由下图来看一下Spark api演化

image.png

演化总结:

1)数据处理本质是集合操作。

2)SQL是集合操作语言的典范。

3)DataFrame/DataSet 是SQL通用语言服本。

4)DF/SQL是数据处理的事实标准。

5)Python可以写DF/DS,调用SQL,同时还可以支持机器学习学习各种库,所以Python语言成为王道。

整个API发战方向:

1)DataFrame/DataSet on python。

2)SQL。

为什么会有这样的方向?
1)数据处理本质是集合操作。

2)SQL/DF 易于无感知性能优化,可扩展性也还好。

3)Python作为C/C++的wrapper,同时是所有语音里学习成本最低的,非常适合做交互。

Stage3:从Application到Service突破一些常见模式

分布式编程的趋势:
1.越来越简单,越来越靠近单机编程。

2.执行延迟越来越低。

spark的两种运行模式:

1.提交spark程序到Yarn/k8s上,运行完成后结束就退出 Application模式。

2.Spark作为常驻程序,通过Thrift/Rest等接口提交任务 Service模式。

Ray只有一个模式:
service模式。

service模式的好处:

1)任务提交快(无进程申请,初始化等开销)。

2)执行速度快(AdHoc即席查询查询)。

3)负载均衡,集群的集群什么的都可以一起上。

4)满足数据分析如报表需求。

Service模式是一种进步。

Stage4:MLSQL是如何集大成,成为最好的分布式编程平台

MLSQL架构图:

image.png

MLSQL将会结合Spark以及Ray。

MLSQL代码示例:

image.png

MLSQL语言组成:

image.png

1.SQL 拓展版sql。

2.命令行 语法糖,本质也是sql。

3.python 内嵌于sql。

为什么要一个新语言?
1)算法-》80%的代码时SQL,20%的代码时Python。

2)研发,产品运营,分析师-》100%SQL(部分拓展使用Java/Scala)。

因为要让SQL成为头等公民,那么也就导致MLSQL应运而生。

一段典型的MLSQL脚本:

image.png

Java/Scala可以写SQL函数:

image.png

MLSQL特点:

1)简单-》SQL/命令行是一等公民,兼顾灵活可内嵌Python/Java/Scala。

2)内置权限=》 语言级别支持权限授权,一切资源都会抽象成表,精确到字段控制。

3)生态-》 可支持Spark/Ray之上的所有生态。

最后的建议:

1)请用Service模式。

2)分布式编程平台,Ray是趋势,但Spark生态够它继续辉煌。

3)Ray成为机器学习的Spark。

4)数据API标准是SQL(DataFrame/DataSet),Al是Python。

5)MLSQL作为一门新的面向算法和机器学习的语言,解释执行,内嵌权限,极度简化了大数据和A的应用们。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2天前
|
机器学习/深度学习 人工智能
【机器学习】有哪些指标,可以检查回归模型是否良好地拟合了数据?
【5月更文挑战第16天】【机器学习】有哪些指标,可以检查回归模型是否良好地拟合了数据?
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
【5月更文挑战第14天】【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
|
4天前
|
机器学习/深度学习 运维 算法
【机器学习】可以利用K-means算法找到数据中的离群值吗?
【5月更文挑战第14天】【机器学习】可以利用K-means算法找到数据中的离群值吗?
|
5天前
|
数据采集 机器学习/深度学习 人工智能
【机器学习】在使用K-means算法之前,如何预处理数据?
【5月更文挑战第12天】【机器学习】在使用K-means算法之前,如何预处理数据?
|
5天前
|
机器学习/深度学习
【机器学习】噪声数据对贝叶斯模型有什么样的影响?
【5月更文挑战第10天】【机器学习】噪声数据对贝叶斯模型有什么样的影响?
|
5天前
|
机器学习/深度学习 数据采集 算法
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
|
5天前
|
数据采集
【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
【5月更文挑战第5天】【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
【5月更文挑战第4天】【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
|
5天前
|
机器学习/深度学习 存储 数据采集
【Python 机器学习专栏】PCA(主成分分析)在数据降维中的应用
【4月更文挑战第30天】本文探讨了主成分分析(PCA)在高维数据降维中的应用。PCA通过线性变换找到最大化方差的主成分,从而降低数据维度,简化存储和计算,同时去除噪声。文章介绍了PCA的基本原理、步骤,强调了PCA在数据降维、可视化和特征提取上的优势,并提供了Python实现示例。PCA广泛应用在图像压缩、机器学习和数据分析等领域,但降维后可能损失解释性,需注意选择合适主成分数量及数据预处理。
|
5天前
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。