专家教你运用MaxCompute玩转大数据分析

阿里云云栖社区 / 2018年09月17日 20:47

生活

摘要: 摘要传统的数据剖析常常运用的东西是Hadoop或Spark在运用之前环境是需求用户自己去树立的。跟着事务逐渐向云搬迁如安在云进步行大数据剖析是需求处理的问题。为此阿里云供给了一项很重要的效劳——大数据核算效劳MaxCompute。

本次的共享首要分为三部分:

一、企业云上树立的数据剖析渠道:该部分首要介绍阿里云树立的数据剖析渠道全体架构和剖析流程。

二、大数据核算效劳MaxCompute:该部分首要介绍了大数据核算效劳MaxCompute的详细状况,包含特色、运用场景、功用组成以及运用进程中的留意事项,一起介绍了驻云科技运用MaxCompute完结的客户事例。

一、企业云上树立的数据剖析渠道

在了解MaxCompute之前,咱们先来了解一下现在阿里云上树立的数据剖析渠道全体架构(如下图)。最左面是数据源,在帮用户做数据剖析的时分,首要需求明晰数据源是在什么地方,比方线下的数据库如MySQL、SQLserver或Oracle,还有一些是在自己事务体系里边,比方效劳器的日志等,现在有的用户也将数据存放在NoSQL的数据库中,总之数据源多种多样,数据源的方位是首要需求明晰的;然后需求把数据抽取到云端,用于在云进步行数据剖析,不论用户是否运用云效劳,都能够运用数据集成技能将离线或实时数据抽取到阿里云与数据处理相关的效劳中,关于离线数据运用的是数据集成CDP,关于流式核算发生的实时数据运用的是DataHub;所抽取的数据会用到三个与数据处理相关的效劳,一个是MaxCompute用来做离线核算,一个是剖析型数据库做在线数据剖析,相似于OLAP场景,终究一个是流式核算于正常流式核算效劳;这三个效劳处理过的数据能够经过SQL、MapReduce、Graph或机器学习的办法进行剖析;经过剖析的数据成果终究能够经过阿里云的数据运用进行展示,大数据范畴中的一个子范畴是数据可视化,重视怎样将数据剖析成果进行展示,阿里云针对这点供给了许多数据运用,首要的运用又两个,一个是QuickBI,将成果经过报表的办法进行展示,别的一个是DataV,经过大图办法进行展示。以上是在云端比较完好的数据处理剖析流程,在以上进程中,阿里云会供给一个可视化的渠道,让用户以可见的办法进行数据处理与剖析,不像传统的数据处理需求经过指令行,短少交互性,上手难度高。

上述进程中,用的比较多的是MaxCompute效劳,这也是咱们今日介绍的要点——怎样运用MaxCompute进行数据剖析。

二、大数据核算效劳MaxCompute

介绍

MaxCompute本来叫做ODPS,它是阿里云自主研制的支撑离线数据剖析的效劳,离线核算阐明数据处理的实时性要求没有那么高,现在的处理才干能够到达TB/PB等级,阿里云从前用了六个小时对100个PB的数据完结了处理。现在MaxCompute被广泛运用于数据剖析、发掘、商业智能等范畴,别的,阿里巴巴的数据事务都运行在MaxCompute之上。

特色海量运算触手可得。MaxCompute能够理解为阿里云现已为用户树立好了数据处理的渠道,渠道背面有上万台的效劳器集群支撑,能够依据数据规划主动调整集群存储和核算才干,最大化发挥数据的价值。关于用户来讲,只需求将自己的数据上传,就能够对数据进行处理和剖析,而不需求自己树立数据处理环境。

效劳“开箱即用”。MaxCompute效劳的运用不需求任何的杂乱装备,只需求简略的几步操作,就能够上传数据,剖析数据并得到剖析成果。之前有一个企业客户是做手机软件数据搜集的,搜集的是手机用户app运用相关的行为数据,经过这些数据剖析手机用户的运用偏好,然后将成果卖给第三方的公司,比方广告或app的运用厂商。这家企业起先挑选的是Hadoop来进行数据剖析,由于Hadoop的存在时刻比较久了,开展较为老练,一起也是开源的,可是企业短少运用Hadoop进行大数据剖析的技能人员,现有的开发人员和技能人员只能自己去学习怎样树立Hadoop环境,怎样运用Hadoop去做数据剖析,整个Hadoop的研讨学习差不多耗费了半年时刻,仅仅运用了两台效劳器,能够幻想假如效劳器变多,杂乱度又会大大进步。终究,由于事务上没有由于Hadoop的研讨运用呈现什么发展。该企业转向了MaxCompute效劳,底层的集群怎样树立他们不需求关怀,只需求将数据上传、然后依照事务需求进行剖析即可。

数据存储安全牢靠。运用MaxCompute的安全功能够得到确保,完结的技能是三重备份防止数据丢掉,别的还有一些读写鉴权、运用沙箱、体系沙箱等多层次安全机制来确保数据之间拜访的时分不会呈现不安全的要素。

多用户协作。MaxCompute是在云上供给效劳的,只要是阿里云的用户,都能够在云上运用它来进行数据剖析,支撑多用户协作。传统数据剖析中会呈现“数据孤岛”,即企业中不同事务部门都有自己的数据,数据之间相互不透明,然后导致信息孤岛。而运用MaxCompute能够将整个企业中一切事务部门的数据打通,削减数据孤岛,在确保数据安全的前提下最大化作业效率。

按量付费。这一点其实的是和云效劳是相似的,依据用户的实际运用办法和需求进行收费,这样能够防止像传统的数据剖析集群闲暇而导致的资源糟蹋,最大化下降数据的运用本钱。别的,MaxCompute现在支撑包年包月的计费办法,由于有些用户进行数据剖析的次数比较频频,比方每天事务完毕之后都会进行结算处理,这种状况下运用按量付费可能不那么合算,而更适合运用包年包月的办法。

MaxCompute的运用场景

依据SQL构建大规划数据仓库体系和BI体系

传统状况下,能够经过第三方的效劳和开源的技能树立企业数据仓库体系,现在能够依据MaxCompute在云上方便地树立。

依据DAG/Graph构建大型分布式体系

DAG是Spark中的有向无环图,MaxCompute也是支撑这种相似于Spark的核算办法的;别的MaxCompute也支撑Graph的核算办法,比方在交际范畴中(游戏)所做的交际剖析。在所构建的大型分布式体系中,能够经过SDK的办法来调用底层的MapReduce来进行数据剖析处理。

依据核算和机器学习的大数据核算和数据发掘

并不是说MaxCompute自身支撑机器学习,而是能够和机器学习来结合运用。由于拿到数据后,在数据处理之前会对数据进行清洗和预处理,处理完之后能够将这些数据交给机器学习渠道,在机器学习渠道中做一些深化的机器学习处理算法,比方能够将MaxCompute的成果作为练习的数据给机器学习渠道进行练习并树立模型。MaxCompute中供给专门的接口来对接机器学习渠道

MaxCompute的功用组成

MaxCompute的首要功用包含以下四个:

数据上传下载。数据原本是存放在自己的数据源中,想要运用MaxCompute进行数据剖析,需求将数据上传到MaxCompute中,假如数据不在MaxCompute中,是没有办法做数据剖析的,上传之后处理核算的成果还能够进行下载。数据的上传下载首要用到的是Tunnel 的模块,可运用的办法有两种,一种是Tunnel SDK,另一种是tunnel指令行东西。此外还能够凭借第三方的集成插件来做数据的上传和下载,比方阿里云专门的数据集成办法以及阿里云开源效劳DataX。

SQL快捷开发。数据的上传后就能够进行剖析,首要能够运用SQL,MaxCompute支撑SQL的运用来辅佐核算,这个SQL和常用的SQL是相似的(百分之九十以上兼容)。咱们假如了解Hive(Hadoop开源生态的一员,经过SQL句子做数据剖析)的话会发现,MaxCompute支撑的SQL和Hive的风格相似。由于Hive是开源的,有许多人用过,阿里云在推出MaxCompute的时分,假如运用全新的SQL风格,用户的学习本钱会添加,而运用和其他东西相似的风格,用户学习起来也比较简略。

自界说函数。在运用SQL进行核算的时分,有些没有办法经过内置的函数来处理,这时分就能够运用MaxCompute支撑的自界说函数功用来处理。现在所支撑的自界说函数包含自界说标量函数、自界说表值函数和自界说聚组函数。

分布式编程模型。假如有些场景比较杂乱,经过SQL没办法处理,能够运用MaxCompute支撑的分布式编程模型,用户能够自己编写运用逻辑来做数据剖析。其间,所支撑的分布式编程模型有两种,一种是MapReduce,用户能够自己写mapper和reducer来进行数据剖析;别的一种是Graph,经过图核算的办法来对数据进行剖析。

上述的功用终究该挑选哪个呢?咱们经过下图来协助咱们进行功用的挑选。首要,在运用的时分用户需求明晰数据是否现已上传到MaxCompute,假如没有,能够经过Tunnel或第三方的一些东西上传数据;数据上传之后看是否能够运用简略的SQL句子来处理,假如能够运用,则主张首要运用SQL来做处理;假如经过简函数功用缺少,无法运用SQL来进行处理,这个时分能够考虑是否能够运用自界说函数(UDF)来进行处理。假如能够,则需求编写自界说函数,运用SQL调用UDF来处理数据;不然,考虑运用MR或Graph的办法来对数据进行处理。之所以这样主张功用挑选,是依据由简到难的考虑,运用SQL是最简略的,UDF自界说函数难度进步,但实质仍是依据SQL,依据MR或Graph的办法涉及到运用Java做运用开发,需求对结构了解,才干对数据做相应的处理和剖析,难度最大。

接下来的介绍一下云端进行数据剖析的进程中,需求用户参加的作业首要有两个,一个是自界说函数UDF的开发,另一个是编写MapReduce。

自界说函数UDF的开发。第一步首要用户需求在本地将开发UDF的环境装置装备好,阿里云的UDF开发言语以Java为主,其他语音如Python也在逐渐支撑。假如用Java进行开发,那相应的开发环境如Eclipse等需求装置,开发完结后能够运用本地方法进行测验。第二步是将开发并测验经过的UDF导出生成Jar包。第三步是运用odpscmd指令将本地生成的Jar包上传到MaxCompute,将其作为资源来运用。第四步是在MaxCompute中,依据上传的Jar包资源生成自界说函数。终究一步是在MaxCompute中写SQL句子并测验运用自界说函数。

MapReduce开发。MapReduce开发的中心是编写mapper和reducer,和传统的Hadoop中的MapReduce的编写是相似的,仅仅MaxCompute做了很好的封装,许多代码都协助用户写好了。MaxCompute中MapReduce的开发流程是:第一步装置装备环境;第二步开发MapReduce程序;第三步在本地方法下测验脚本;第四步在开发测验完没有问题后,导出Jar包供云端运用;第五步将Jar包上传至MaxCompute项目空间;第六步在MaxCompute中运用MapReduce。其间本地测验有两个优点,一个是不会对线上的环境发生影响,另一个是只需求编写测验的数据就能够在本地进行测验。

MaxCompute运用的留意事项

元数据不一致。咱们在运用MaxCompute进行数据处理的时分,常常会面对元数据不一致的状况。东方航空大数据开发人员从前说过一件很有意思的工作,那就是东航现在不知道自己有多少架飞机,究其原因是由于内部的元数据没有保持一致,或许说数据短少规范的界说。这种状况下常用的办法是界说规范的元数据,创立Map表或许界说变换规矩,清洗数据。举个简略的比方,比方现在有两张表,customers表和kh表(如下图),都与用户信息相关,customers表中性别(Gender)运用M代表男性,F代表女人,而在kh表中性别(XB)男性运用“男”表明,女人运用“女”表明;别的能够发现,除了性别,这两张表中关于身高的界说也是是不一致的,前者选用的是厘米为单位的身高计量办法,而后者选用的是尺度的计量办法。这种状况下数据剖析进程中假如两个表需求做join,就没有办法做剖析,所以说需求对元数据进行一致。详细怎样做呢?比方说创立一张map_gender的表,对涉及到性别的元数据进行一致,比方用1来表明男性,2来表明女人,再比方一致用厘米为单位来计量身高,关于尺度为单位的计量,经过公式进行变换。这样的优点是生成图最右侧的两张表,表中的元数据便完结了一致,便于数据剖析。

数据缺失。在做数据剖析的时分,不能够确保搜集的数据必定是彻底的,数据总之会呈现缺失的状况,在这种状况下,咱们来看一下该怎样处理。假如数据缺失比较少的话,能够简略的丢掉不予考虑,比方有一亿条数据,有一万行数据是缺失的,这一万行数据的缺失对整个成果影响不大,这个时分就能够不考虑这一万行数据的缺失;而假如这一亿行数据缺失了六七千万行,那算出的数据肯定是不牢靠的,这个时分就不能简略的丢掉。常用的办法有三种,最简略的是填充固定值,比方下图左面的表中有一行性别是缺失的,能够置-1,代表这一行的性别值缺失或不知道;第二种办法是填充核算值,如平均值、极值或众数等;前两种办法都存在必定的随机性,牢靠性不高,跟着机器学习算法的遍及,常常运用的第三种办法是拟合,经过模型或许规矩进行拟合,得到最应该填的值,这个成果是相对来讲更牢靠的,愈加接近于实在的值。还有一种状况是在数据搜集的时分数据就缺失了,比方经过滴滴打车搜集的数据来剖析企业的加班状况,可是某些企业可能会有自己的班车或许其他的原因,这样就导致有些数据自身就没有搜集到,这种状况的数据缺失关于成果的影响会更大。

数据仓库的树立。在运用MaxCompute树立数据仓库的时分,主张运用分层的办法,比方分红ODS、EDW和ADM三种不同的层次来进行树立,其间ODS完结按时、跨范畴的运营细节的查询,已取得细粒度的运营数据展示;EDW层完结依据历史数据的核算剖析和数据发掘,已取得客户深层次的特征和商场开展规律;ADM层在数据的基础进步行加工汇总构成的目标数据存储剖析型和加工汇总型数据。这样做的优点是结构明晰,功用明晰,任何变化能够很快的完结修正。别的,分层树立数仓的时分,表的命名有必定的要求,比方ODS层中的表中含有ODS,直接通知用户这张表是在ODS层,或许明晰表标明表运用的事务域。

运用事例

终究向咱们介绍驻云科技从前做过的一个客户事例,是协助某才智商场树立大数据架构,如下图所示。商场的需求是了解每一层的商铺销量,假如商铺的销量很低,就把它关掉;别的还想要了解用户的购物习气,为用户做精准推送。为了满意商场需求,需求剖析的数据来历有许多,除了线下数据库,还有一些文本数据,驻云经过编写shell脚本对文本数据进行清洗,然后存放在阿里云的OSS中,OSS能够作为MaxCompute的外部表,不需求导入MaxCompute便能够进行剖析,尽管功能会有必定的丢失,但相关于其所带来的灵敏性,丢失是能够承受的。不同数据源的数据导入MaxCompute能够运用的办法有多种,除了阿里云供给的数据集成效劳,还能够选用第三方或许开源东西DataX,这种办法的优点是能够完结灵敏定制。一切数据整合到MaxCompute中后便能够进行剖析,剖析完后成果展示的办法有两种,第一种是将MaxCompute的剖析成果经过数据集成的办法导入到阿里云的RDS中,然后在Data-V中进行展示。为什么需求导入到RDS中而不是直接导入Data-V呢?需求留意的是,MaxCompute完结的是离线核算,实时性要求是不高的,而Data-V是一个大屏,对数据的实时性要求很高,所以一般的进程是将成果先导入到数据库中,然后从数据库中再读取相关数据在Data-V中做大图展示。还有一种办法是不做大屏展示,而是做报表剖析,这种状况下能够将MaxCompute的数据直接在Quick-BI中展示,也能够在阿里云的ADS数据库进行存储和二次剖析,剖析完之后再在Quick-BI中展示。这两种办法的展示办法有必定的重合性,比方二维的饼图等,可是Data-V能够展示三维地图等办法,经过大屏很直观的展示。这两种展示办法能够依据需求挑选。

作者:李杉杉

1. 中国品牌新闻网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2. 中国品牌新闻网的原创文章,请转载时务必注明文章作者和"来源: 中国品牌新闻网",不尊重原创的行为 中国品牌新闻网或将追究责任;3.作者投稿可能会经 中国品牌新闻网编辑修改或补充。