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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 摘要传统的数据分析经常使用的工具是Hadoop或Spark在使用之前环境是需要用户自己去搭建的。随着业务逐渐向云迁移如何在云上进行大数据分析是需要解决的问题。为此阿里云提供了一项很重要的服务——大数据计算服务MaxCompute。

摘要:传统的数据分析,经常使用的工具是Hadoop或Spark,在使用之前环境是需要用户自己去搭建的。随着业务逐渐向云迁移,如何在云上进行大数据分析是需要解决的问题。为此,阿里云提供了一项很重要的服务——大数据计算服务MaxCompute。本视频中,上海驻云科技的专家将带领大家了解如何使用阿里云的大数据计算服务MaxCompute来进行数据分析的。

宾简介:

翟永东,来自上海驻云科技。上海驻云科技是阿里云的合作伙伴之一,其宗旨是帮助客户将自己的业务系统迁移到云上,公司在云上会使用阿里云的一些大数据产品帮助用户做数据分析。

以下内容根据演宾视频分享以及PPT整理而成。

本次演讲PPT下载,请戳这里!

关于MaxCompute更多精彩文章,请移步云栖社区MaxCompute公众号

本次的分享主要分为三部分:

一、云上搭建的数据分析平台:该部分主要介绍阿里云搭建的数据分析平台整体架构和分析流程。

二、大数据算服MaxCompute:该部分主要介绍了大数据计算服务MaxCompute的具体情况,包括特点、使用场景、功能组成以及使用过程中的注意事项,同时介绍了驻云科技使用MaxCompute完成的客户案例。

一、企业云上搭建的数据分析平台

在了解MaxCompute之前,我们先来了解一下目前阿里云上搭建的数据分析平台整体架构(如下图)。最左侧是数据源,在帮用户做数据分析的时候,首先需要明确数据源是在什么地方,比如线下的数据库如MySQL、SQLserver或Oracle,还有一些是在自己业务系统里面,比如服务器的日志等,目前有的用户也将数据存放在NoSQL的数据库中,总之数据源多种多样,数据源的位置是首先需要明确的;然后需要把数据抽取到云端,用于在云上进行数据分析,不管用户是否使用云服务,都可以使用数据集成技术将离线或实时数据抽取到阿里云与数据处理相关的服务中,对于离线数据使用的是数据集成CDP,对于流式计算产生的实时数据使用的是DataHub;所抽取的数据会用到三个与数据处理相关的服务,一个是MaxCompute用来做离线计算,一个是分析型数据库做在线数据分析,类似于OLAP场景,最后一个是流式计算于正常流式计算服务;这三个服务处理过的数据可以通过SQL、MapReduce、Graph或机器学习的方式进行分析;经过分析的数据结果最终可以通过阿里云的数据应用进行展示,大数据领域中的一个子领域是数据可视化,关注如何将数据分析结果进行展示,阿里云针对这点提供了很多数据应用,主要的应用又两个,一个是QuickBI,将结果通过报表的形式进行展示,另外一个是DataV,通过大图形式进行展示。以上是在云端比较完整的数据处理分析流程,在以上过程中,阿里云会提供一个可视化的平台,让用户以可见的方式进行数据处理与分析,不像传统的数据处理需要通过命令行,缺乏交互性,上手难度高。

01dae114fe737010af73923bda4cee4f8a9521e1

上述过程中,用的比较多的是MaxCompute服务,这也是我们今天介绍的重点——如何使用MaxCompute进行数据分析。

二、大数据计算服务MaxCompute

介绍

MaxCompute原来叫做ODPS,它是阿里云自主研发的支持离线数据分析的服务,离线计算说明数据处理的实时性要求没有那么高,目前的处理能力可以达到TB/PB级别,阿里云曾经用了六个小时对100个PB的数据完成了处理。目前MaxCompute被广泛应用于数据分析、挖掘、商业智能等领域,另外,阿里巴巴的数据业务都运行在MaxCompute之上。

bc84e34a5d18b56c72e5d86e6e75e5d25b011422

特点海量运算触手可得。MaxCompute可以理解为阿里云已经为用户搭建好了数据处理的平台,平台背后有上万台的服务器集群支持,可以根据数据规模自动调整集群存储和计算能力,最大化发挥数据的价值。对于用户来讲,只需要将自己的数据上传,就可以对数据进行处理和分析,而不需要自己搭建数据处理环境。

服务开箱即用。MaxCompute服务的使用不需要任何的复杂配置,只需要简单的几步操作,就可以上传数据,分析数据并得到分析结果。之前有一个企业客户是做手机软件数据收集的,收集的是手机用户app使用相关的行为数据,通过这些数据分析手机用户的应用偏好,然后将结果卖给第三方的公司,比如广告或app的应用厂商。这家企业起初选择的是Hadoop来进行数据分析,因为Hadoop的存在时间比较久了,发展较为成熟,同时也是开源的,但是企业缺少使用Hadoop进行大数据分析的技术人员,现有的开发人员和技术人员只能自己去学习如何搭建Hadoop环境,如何使用Hadoop去做数据分析,整个Hadoop的研究学习差不多耗费了半年时间,仅仅使用了两台服务器,可以想象如果服务器变多,复杂度又会大大提升。最终,由于业务上没有因为Hadoop的研究使用出现什么进展。该企业转向了MaxCompute服务,底层的集群如何搭建他们不需要关心,只需要将数据上传、然后按照业务需求进行分析即可。

数据存储安全可靠。使用MaxCompute的安全性可以得到保障,实现的技术是三重备份防止数据丢失,另外还有一些读写鉴权、应用沙箱、系统沙箱等多层次安全机制来保证数据之间访问的时候不会出现不安全的因素。

多用户协作。MaxCompute是在云上提供服务的,只要是阿里云的用户,都可以在云上使用它来进行数据分析,支持多用户协作。传统数据分析中会出现“数据孤岛”,即企业中不同业务部门都有自己的数据,数据之间互相不透明,从而导致信息孤岛。而使用MaxCompute可以将整个企业中所有业务部门的数据打通,减少数据孤岛,在保障数据安全的前提下最大化工作效率。

按量付费。这一点其实的是和云服务是类似的,根据用户的实际使用方式和需求进行收费,这样可以避免像传统的数据分析集群空闲而导致的资源浪费,最大化降低数据的使用成本。另外,MaxCompute目前支持包年包月的计费形式,因为有些用户进行数据分析的次数比较频繁,比如每天业务结束之后都会进行结算处理,这种情况下使用按量付费可能不那么划算,而更适合使用包年包月的形式。

ef9a3015adea303021c8394b04968cfec218c59e

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,通过图计算的方式来对数据进行分析。

 3858b4a47262aadf261253d2b9f0f1c096165c1b

上述的功能究竟该选择哪个呢?我们通过下图来帮助大家进行功能的选择。首先,在使用的时候用户需要明确数据是否已经上传到MaxCompute,如果没有,可以通过Tunnel或第三方的一些工具上传数据;数据上传之后看是否可以使用简单的SQL语句来处理,如果可以使用,则建议首先使用SQL来做处理;如果通过简函数功能不足,无法使用SQL来进行处理,这个时候可以考虑是否可以使用自定义函数(UDF)来进行处理。如果可以,则需要编写自定义函数,使用SQL调用UDF来处理数据;否则,考虑使用MR或Graph的方式来对数据进行处理。之所以这样建议功能选择,是基于由简到难的考虑,使用SQL是最简单的,UDF自定义函数难度提高,但本质还是基于SQL,基于MR或Graph的方式涉及到使用Java做应用开发,需要对框架熟悉,才能对数据做相应的处理和分析,难度最大。

d9dc8afd0077eccd712492fa432e228ce928f58e

接下来的介绍一下云端进行数据分析的过程中,需要用户参与的工作主要有两个,一个是自定义函数UDF的开发,另一个是编写MapReduce。

自定义函数UDF的开发。第一步首先用户需要在本地将开发UDF的环境安装配置好,阿里云的UDF开发语言以Java为主,其他语音如Python也在逐步支持。如果用Java进行开发,那相应的开发环境如Eclipse等需要安装,开发完成后可以使用本地模式进行测试。第二步是将开发并测试通过的UDF导出生成Jar包。第三步是使用odpscmd命令将本地生成的Jar包上传到MaxCompute,将其作为资源来使用。第四步是在MaxCompute中,基于上传的Jar包资源生成自定义函数。最后一步是在MaxCompute中写SQL语句并测试使用自定义函数。

67528c690ae4a5b3d537b40644a0de308f581e37

MapReduceMapReduce开发的核心是编写mapper和reducer,和传统的Hadoop中的MapReduce的编写是类似的,只是MaxCompute做了很好的封装,很多代码都帮助用户写好了。MaxCompute中MapReduce的开发流程是:第一步安装配置环境;第二步开发MapReduce程序;第三步在本地模式下测试脚本;第四步在开发测试完没有问题后,导出Jar包供云端使用;第五步将Jar包上传至MaxCompute项目空间;第六步在MaxCompute中使用MapReduce。其中本地测试有两个好处,一个是不会对线上的环境产生影响,另一个是只需要编写测试的数据就可以在本地进行测试。

fe5cbef3c4015cb6ef0eeab0e3e4498769313501

MaxCompute使用的注意事

元数据不一致。大家在使用MaxCompute进行数据处理的时候,经常会面临元数据不一致的情况。东方航空大数据开发人员曾经说过一件很有意思的事情,那就是东航现在不知道自己有多少架飞机,究其原因是因为内部的元数据没有保持一致,或者说数据缺乏标准的定义。这种情况下常用的方法是定义标准的元数据,创建Map表或者定义转换规则,清洗数据。举个简单的例子,比如现在有两张表,customers表和kh表(如下图),都与用户信息相关,customers表中性别(Gender)使用M代表男性,F代表女性,而在kh表中性别(XB)男性使用表示,女性使用表示;另外可以发现,除了性别,这两张表中对于身高的定义也是是不一致的,前者采用的是厘米为单位的身高计量方式,而后者采用的是尺寸的计量方式。这种情况下数据分析过程中如果两个表需要做join,就没有办法做分析,所以说需要对元数据进行统一。具体怎么做呢?比方说创建一张map_gender的表,对涉及到性别的元数据进行统一,比如用1来表示男性,2来表示女性,再比如统一用厘米为单位来计量身高,对于尺寸为单位的计量,通过公式进行转换。这样的好处是生成图最右侧的两张表,表中的元数据便实现了统一,便于数据分析。

15820ab446554e9bc4715baaa2aaf3e0396a8cc8

数据缺失。在做数据分析的时候,不能够保证收集的数据一定是完全的,数据总归会出现缺失的情况,在这种情况下,我们来看一下该怎么处理。如果数据缺失比较少的话,可以简单的扔掉不予考虑,比如有一亿条数据,有一万行数据是缺失的,这一万行数据的缺失对整个结果影响不大,这个时候就可以不考虑这一万行数据的缺失;而如果这一亿行数据缺失了六七千万行,那算出的数据肯定是不可靠的,这个时候就不能简单的丢弃。常用的方法有三种,最简单的是填充固定值,比如下图左边的表中有一行性别是缺失的,可以置-1,代表这一行的性别值缺失或未知;第二种方式是填充统计值,如平均值、极值或众数等;前两种方法都存在一定的随机性,可靠性不高,随着机器学习算法的普及,经常使用的第三种方式是拟合,通过模型或者规则进行拟合,得到最应该填的值,这个结果是相对来讲更可靠的,更加接近于真实的值。还有一种情况是在数据收集的时候数据就缺失了,比如通过滴滴打车收集的数据来分析企业的加班情况,但是某些企业可能会有自己的班车或者其他的原因,这样就导致有些数据本身就没有收集到,这种情况的数据缺失对于结果的影响会更大。

ec46a066a2790450d8883c8d590ec54597967627

数据仓库的搭建。在使用MaxCompute搭建数据仓库的时候,建议使用分层的方式,比如分成ODS、EDW和ADM三种不同的层次来进行搭建,其中ODS实现准时、跨领域的运营细节的查询,已获得细粒度的运营数据展现;EDW层实现基于历史数据的统计分析和数据挖掘,已获得客户深层次的特征和市场发展规律;ADM层在数据的基础上进行加工汇总形成的指标数据存储分析型和加工汇总型数据。这样做的好处是结构清晰,功能明确,任何变动可以很快的完成修改。另外,分层搭建数仓的时候,表的命名有一定的要求,比如ODS层中的表中含有ODS,直接告诉用户这张表是在ODS层,或者明确表标明表应用的业务域。

e7179ac461bbd6b3b26461f7f6420688389e2260

应用案例

最后向大家介绍驻云科技曾经做过的一个客户案例,是帮助某智慧商场搭建大数据架构,如下图所示。商场的需求是了解每一层的商铺销量,如果商铺的销量很低,就把它关掉;另外还想要了解用户的购物习惯,为用户做精准推送。为了满足商场需求,需要分析的数据来源有很多,除了线下数据库,还有一些文本数据,驻云通过编写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可以展现三维地图等形式,通过大屏很直观的展现。这两种展现方式可以根据需求选择。

fabc7e0c84900c86fee51223211f4f903ffa3230

 

本文由云栖志愿小组李杉杉整理,编辑:仲浩,原作者&审校:隐林

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
67 4
|
26天前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
88 2
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
123 1
|
2月前
|
SQL 消息中间件 分布式计算
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
72 5
|
16天前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
32 4
|
17天前
|
关系型数据库 分布式数据库 数据库
PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具
在数字化时代,企业面对海量数据的挑战,PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具。它不仅支持高速数据读写,还通过数据分区、索引优化等策略提升分析效率,适用于电商、金融等多个行业,助力企业精准决策。
30 4
|
17天前
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
105 5
|
29天前
|
存储 监控 数据挖掘
【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
ClickHouse 的物化视图是一种特殊表,通过预先计算并存储查询结果,显著提高查询性能,减少资源消耗,适用于实时报表、日志分析、用户行为分析、金融数据分析和物联网数据分析等场景。物化视图的创建、数据插入、更新和一致性保证通过事务机制实现。
109 14
|
1月前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
84 2
|
1月前
|
数据采集 机器学习/深度学习 搜索推荐
大数据与社交媒体:用户行为分析
【10月更文挑战第31天】在数字化时代,社交媒体成为人们生活的重要部分,大数据技术的发展使其用户行为分析成为企业理解用户需求、优化产品设计和提升用户体验的关键手段。本文探讨了大数据在社交媒体用户行为分析中的应用,包括用户画像构建、情感分析、行为路径分析和社交网络分析,以及面临的挑战与机遇。

相关产品

  • 云原生大数据计算服务 MaxCompute