Python+大数据计算平台,PyODPS架构手把手教你搭建

数据分析和机器学习

大数据基本都是建立在Hadoop系统的生态上的,其实一个Java的环境。很多人喜欢用Python和R来进行数据分析,但是这往往对应一些小数据的问题,或者本地数据处理的问题。如何将二者进行结合使其具有更大的价值?Hadoop现有的生态系统和现有的Python环境如上图所示。

MaxCompute

MaxCompute是面向离线计算的大数据平台,提供TB/PB级的数据处理,多租户、开箱即用、隔离机制确保安全。MaxCompute上主要分析的工具就是SQL,SQL非常简单、容易上手,属于描述型。Tunnel提供数据上传下载通道,不需要经过SQL引擎的调度。

Pandas

Pandas是基于numpy的数据分析的工具,里面最重要的结构是DataFrame,提供一系列绘图的API,背后是matplotlib的操作,非常容易和Python第三方库交互。

PyODPS架构

PyODPS即利用Python进行大数据分析,其架构如上图所示。底层是基础API,可以利用其操作MaxCompute上的表、函数或者资源。再上面是DataFrame框架,DataFrame包括两部分,一部分是前端,定义了一套表达式的操作,用户写的代码会转化成表达式树,这与普通的语言是一样的。用户可以自定义函数,也可以进行可视化,与第三方库进行交互。后端最下面是Optimizer,其作用是对表达式树进行优化。ODPS和pandas都是通过compiler和analyzer提交到Engine来执行。

背景

为什么要做DataFrame框架?

对于任何一个大数据分析工具,都会面临三个维度上的问题:表达力,API、语法、编程语言是否简单、符合直觉?数据,存储、元数据是否能压缩、有效?引擎,计算的性能是否足够?所以就会面临pandas和SQL两个选择。

如上图所示,pandas的表达力非常好,但是其数据只能放在内存中,引擎是单机的,受限于本机的性能。SQL的表达力有限,但是可以用于大量的数据,数据量小的时候没有引擎的优势,数据量大的时候引擎会变得很有优势。ODPS的目标是综合这两者的优点。

PyODPS DataFrame

PyODPS DataFrame是使用Python语言写的,可以使用Python的变量、条件判断、循环。可以使用pandas类似的语法,定义了自己的一套前端,有了更好的表达力。后端可以根据数据来源来决定具体执行的引擎,是visitor的设计模式,可扩展。整个执行是延迟执行,除非用户调用立即执行的方法,否则是不会直接执行的。

从上图中可以看出,语法非常类似于pandas。

表达式和抽象语法树

从上图可以看出,用户从一个原始的Collection来进行GroupBy操作,再进行列选择的操作,最下面是Source的Collection。取了两个字段species,这两个字段是做By操作的,pental_length是进行聚合的操作取聚合值。Species字段是直接取出来,shortest字段是进行加一的操作。

Optimizer(操作合并)

后端首先会使用Optimizer对表达式树进行优化,先做GroupBy,然后在上面做列选择,通过操作合并可以去除petal_length做聚合操作,再加一,最终形成了GroupBy的Collection。

Optimizer(列剪枝)

用户join了两个data frame,再取来自data frame 的两个列的时候,如果提交到一个大数据的环境,这样一个过程是非常低下的,因为不是每个列都用到了。所以要对joined下的列进行剪枝操作。比如,data frame1我们只用到了其中的一个字段,我们只需要将字段截取出来做一个projection来形成新的Collection,data frame2也类似。这样,对这两部分进行校验操作的时候就能极大的减少数据的输出量。

Optimizer(谓词下推)

如果对两个data frame进行joined然后再分别进行过滤的话,这个过滤操作是应该下推到下面来执行的,这样就能减少joined 的输入的量。

可视化

提供了visualize()来方便用户进行可视化。在右边的例子中可以看到,ODSP SQL后端会compile成一条SQL执行。

后端

从上图中可以看出,计算后端是非常灵活的。用户甚至可以joined一个pandas的data frame和maxcompute上一个表的数据。

Analyzer

Analyzer的作用是针对具体的后端,将一些操作进行转化。比如:

  • 有些操作比如value_counts,pandas本身支持,因此对于pandas后端,无需处理;对于ODPS SQL后端,没有一个直接的操作来执行,所以在analyzer执行的时候,会被改写成groupby + sort的操作;
  • 还有一些算子,在compile到ODPS SQL时,没有内建函数能完成,会被改写成自定义函数。

ODPS SQL后端

ODPS SQL后端怎么进行SQL编译再执行的操作?编译器可以从上到下遍历表达式树,找到Join或者Union。对于子过程,进行递归compile。再到Engine来具体执行时,会使用Analyzer对表达式树进行改写,compile自上而下的子过程,自底向上compile成SQL子句,最终得到完整的SQL语句,提交SQL并返回任务。

pandas后端

首先访问这个表达式树,然后对每个表达式树节点对应到pandas操作,整个表达式树遍历完之后就会形成DAG。Engine执行按DAG拓扑顺序执行,不断地把它应用到pandas操作,最终得到一个结果。对于大数据环境来说,pandas后端的作用是做本地DEBUG;当数据量很小时,我们可以使用pandas进行计算。

难点+坑

  • 后端编译出错容易丢失上下文,多次optimize和analyze,导致难以查出是之前哪处visit node导致。解决:保证每个模块独⽴立性、测试完备;
  • bytecode兼容问题,maxcompute只支持Python2.7的自定义函数的执行;
  • SQL的执行顺序。

ML机器学习

机器学习是输入输出一个data frame。比如,有一个iris的data frame,先用name字段来做一个分类字段,调用split方法将其分成60%的训练数据和40%的测试数据。然后初始化一个RandomForests,其里面有一棵决策树,调用train方法训练训练数据,调用predict方法形成一个预测数据,调用segments[0]就可以看到可视化结果。

本文作者:佚名

来源:51CTO

时间: 2024-09-20 13:57:36

Python+大数据计算平台,PyODPS架构手把手教你搭建的相关文章

阿里巴巴大数据计算平台MaxCompute(原名ODPS)全套攻略(持续更新20171122)

  概况介绍 大数据计算服务(MaxCompute,原名ODPS,产品地址:https://www.aliyun.com/product/odps)是一种快速.完全托管的TB/PB级数据仓库解决方案.MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全.本文收录了大量的MaxCompute产品介绍.技术介绍,帮助您快速了解MaxCompute/ODPS. MaxCompute 2.0:阿里巴巴的大数

高可用的大数据计算平台如何持续发布和演进

2016年11月18-20日SDCC 2016中国软件开发者大会,阿里巴巴大数据计算平台首席架构师林伟给我们带来了"高可用的大数据计算平台如何持续发布和演进"的演讲.本文主要谈及大数据系统如何做系统迭代,以及大规模系统因为其大规模没有可能搭建对等的测试环境,需要进行在线测试方面的内容,更有在线测试需要的必要条件等等. 阿里巴巴大数据计算平台需要每天不间断的跑在上万台机器集群上,上面承担阿里核心分析计算任务,有着很高的可靠性和SLA的要求,但是我们同时需要持续不断提高系统的性能,降低成本

【ATF】林伟:大数据计算平台的研究与实践

  2016 ATF阿里技术论坛于4月15日在清华大学举办,主旨是阐述阿里对世界创新做出的贡献.阿里巴巴集团技术委员会主席王坚,阿里巴巴集团首席技术官(CTO)张建锋(花名:行癫),阿里巴巴集团首席风险官(CRO)刘振飞(花名:振飞),蚂蚁金服首席技术官(CTO)程立(花名:鲁肃)以及来自阿里巴巴集团各部门多位技术大咖齐聚一堂,与莘莘学子分享阿里的技术梦想.   在下午的云计算与大数据论坛上,阿里云资深专家林伟(花名:伟林)带来了以<大数据计算平台的研究与实践>为主题的深度分享.林伟目前负责阿

医疗健康大数据服务平台技术架构

医疗健康大数据服务平台是一个包含多个业务系统.多个自身管理软件.是一系列软.硬件和人员.政策支持的综合系统体系,统一建设医疗健康云计算服务中心,集中存储居民医疗卫生信息和居民电子健康档案等数据,满足社会大众.医务工作者.各级卫生主管部门.第三方机构的应用需求. 医疗健康大数据服务平台总体架构如下图所示. 图 医疗健康大数据服务平台总体架构 如上图所示,医疗健康大数据服务平台分为资源层.服务层和展现层.其中层功能如下: 1.展现层 负责对用户提供医疗健康信息.以及分析与挖掘信息服务,支持4大类用户

阿里云携大数据计算平台MaxCompute欧洲开服

参考消息网6月19日报道 英媒称,阿里巴巴旗下的云计算部门阿里云将于2017年下半年将其"MaxCompute"大数据服务带入欧洲. 据英国科技经济类网站硅谷网6月15日报道,当地时间6月15日,阿里云在巴黎VivaTech国际科技创新大会上宣布大数据计算产品"MaxCompute"将于年内在欧洲市场开服,该技术涵盖处理分析.机器学习等一系列完善的数据智能服务.这也是中国类似技术的首次出海,以满足当地众多企业日益增长的数字化转型需求. 报道称,该平台允许客户存储和处

双11前、中、后三阶段大数据计算平台全揭秘

以下内容根据在线分享和幻灯片整理而成. 双11备战 双11的成功离不开背后大数据分析,阿里云大数据平台在双11承担了海量数据分析服务,各个部门会在计算平台上对于相关数据进行深入分析从而保障双11成功进行:通过对物流包裹预测,帮助快递公司调配仓储,使得其在双11当天能够分发6.5亿件包裹,做到兵马未动.粮草先行:对花呗授信额度进行评估,将花呗额度按照每个人风险承受额度进行相应的调整:帮助商家精准营销,对访客分群预测,设计个性化店铺首页:对消费者进行智能导购,通过分析其原始购买记录,对其进行精准化营

阿里云大数据计算平台的自动化、精细化运维之路

免费开通大数据服务:https://www.aliyun.com/product/odps 作者简介:   范伦挺 阿里巴巴 基础架构事业群-技术专家 花名萧一,2010年加入阿里巴巴,现任阿里巴巴集团大数据计算平台运维负责人.团队主要负责阿里巴巴各类离在线大数据计算平台(如MaxCompute.AnalyticDB.StreamCompute等)的运维.架构优化及容量管理等 1.前言 本文主要会从以下四个方面来写,分别是: 阿里大规模计算平台运维面临的一些挑战: 阿里自动化平台建设: 数据精细

一文读懂大数据计算框架与平台

1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务.而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多. 举一个简单的例子,假设我们要从销售记录中

【独家】一文读懂大数据计算框架与平台

1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务.而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多. 举一个简单的例子,假设我们要从销售记录中