MaxCompute 最新特性介绍 | 2019大数据技术公开课第三季

距离上一次MaxCompute新功能的线上发布已通过去了大约一个季度的时间,而在这一段时间里,MaxCompute不断地在增长新的功能和特性,好比参数化视图、UDF支持动态参数、支持分区裁剪、生成建表DDL语句功能等功能都已经获得了广大开发者的普遍使用。那么,近期MaxCompute究竟还有哪些新特性呢?本文就为你们揭晓答案。数据库

如下内容根据视频及PPT整理而成。安全


MaxCompute与阿里云大数据产品解决方案性能优化

在介绍MaxCompute新功能前,咱们先快速对阿里云的大数据产品解决方案进行介绍,以便不熟悉MaxCompute的朋友能快速创建认知。阿里云大数据解决方案中包含了数据接入、数据存储及处理分析、数据服务以及在线应用等这样的几个维度。一般的状况下,基于MaxCompute和阿里云大数据解决方案搭建的系统会经过DataWorks实现离线多源异构数据的同步,并向MaxCompute大数据平台加载数据。与此同时,借助于DTS日志服务、Kafka消息队列服务实现对实时数据的收集。以后,经过流式计算服务实现对于数据的实时计算和分析,并将数据投递到实时在线的服务或者回流到统一的数据仓库服务中去。数据落盘保留下来以后,将进行数据仓库相关的处理分析,加工成为能够被业务消费、高质量的数据集。同时,利用机器学习平台能够开展包含数据准备、模型训练、模型部署在线推理在内的完整智能应用。

在数据服务(data serving)维度,阿里云大数据产品解决方案中也提供了多种的服务,包括了关系型数据库、分析型数据库、ES等,这些服务可以帮助用户加速在面向在线应用场景下的数据消费。同时,阿里云大数据产品解决方案还可以与阿里云线上的Quick BI、DataV以及第三方客户自行购买的BI等工具进行结合。在云上大数据场景下,DataWorks则承担的是总体的数据开发、编排调度以及数据管理的职能。

What's New?MaxCompute产品近期发布预览
本次分享面对的主要群体是对于阿里云MaxCompute产品有所了解而且有必定使用经验的客户,所以所介绍的内容会比较细致,但不会过多展开相关背景及原理介绍,更多地会面向MaxCompute已有的问题以及新推出的特性自己进行分享。

近期以来,MaxCompute大约每三个月就会迭代一个大版本发布到线上,而中间则会有不少个小版本。到8月份的时候,已经距离上次MaxCompute线上发布会通过了大约一个季度的时间,所以须要再作一次新特性的发布。因此本次分享不只涵盖了MaxCompute针对平常需求的功能发布,也包括了大版本发布的内容。

本次所要介绍的MaxCompute产品近期的发布状况主要包括三个部分,首先是近几个月已经陆续发布上线,而且产品文档已经完备的功能,但愿但愿经过本次介绍让开发者可以更好地了解这些新的功能;其次是目前MaxCompute在线上所正在作的大版本升级中已经实现的一批灰度升级项目,本次也会对于其中一些比较成熟的功能进行分享;最后就是一些即将面向更大规模的用户进行发布的功能,也就是目前还处于定向内测阶段的功能。

新Region开服:西南成都节点正式开服、国际Region提供Spark服务
随着阿里云西南成都节点的正式开服,大数据计算服务MaxCompute也正式在西南成都节点开服售卖。与此同时,MaxCompute也提供了不少国际的Region,阿里云根据用户需求的强烈程度优先在香港、德国、新加坡、印度和美西这五个国际Region推出了Spark服务。



新功能:SQL-参数化视图
MaxCompute近期发布上线的版本围绕着SQL核心功能的一些细节作了大量的优化和提高,其中一点就是参数化视图。MaxCompute传统的视图(VIEW)中实现了必定的封装与重用,可是并不接受调用者传递的任何参数,例如:调用者没法对视图读取的底层表进行数据过滤或传递其它参数,致使代码重用能力低下。MaxCompute近期发布上线的版本的SQL引擎支持带参数的视图,支持传入任意表或者其它变量来定制视图的行为,从而加强了视图的可用性和复用度。



新功能: SQL-UDTF/UDAF支持动态参数
新发布的MaxCompute版本的SQL可以支持UDF相关的动态参数。以下图中的代码所示,其中含有一个命名为JsonTuple的UDTF。这里JsonTuple的业务需求就是首先读取一个JSON串,其中包含了一系列JSON内容,而且须要解析其中某些节点的信息。



面对像JsonTuple这样的函数设计,虽然给定了一个JSON,可是可能须要根节点的参数,也可能须要根节点+子节点或者多个子节点的参数去提取并解析JSON字符串中的信息,此时就形成了函数的不肯定性,所以函数最好可以支持用户动态的参数输入,也就是能够根据用户的动态参数输入提取相应的信息。MaxCompute的UTDF和UTAF在参数列表中支持使用*的模式,表示接受任意长度、任意类型的输入参数,从而知足了上述场景的需求。

新功能: SQL-UDT支持资源(Resource)访问
User Defined Type,简称UDT,它属于最近几个版本MaxCompute的SQL里面推出的比较新的功能,目前应用也不是很是普遍。UDT是MaxCompute 2.0以后主张使用的NewSQL能力,其容许在SQL中直接引用第三方语言的类或者对象,获取其数据内容或者调用其方法。目前,MaxCompute的SQL中的UDT提供的是对于Java UDT的支持。举例而言,若是想要在MaxCompute中获取整数中的最大值,一般须要本身写一个UDF函数并经过其余语言实现出来,而其实在像Java这样的高级语言中的一些内置方法就可以实现,所以能够简单地使用Select Java库中的一个方法来得到相应的能力。这是以前所发布的UDT自己的能力,而今天要发布的新特性则是UDT对于MaxCompute中资源访问的支持。MaxCompute中有不少种对象,其中一种就是资源,好比一些数据文件。MaxCompute可使用SQL经过Resource读取文本文件,也能够经过Set参数的方式将自定义的JAR做为UDT可以直接访问的一个库,并在UDT当中使用用户自定义的第三方库。



新功能:SQL-UDF支持分区裁剪
MaxCompute自己有大量的分区表,在分区的使用中一个很重要的优化点就是经过分区裁剪的方式在查询中过滤分区。在过滤分区的时候,有时须要使用一些自定义的逻辑,经过一些自定义的功能来肯定分区的范围。当增长一个UDF时每每会发生全表扫描,这是由于在提交查询的时候还不能肯定提交的分区究竟是哪一个,所以会发生全表扫描,进而带来比较高的费用和更重的负载。



新发布的MaxCompute版本中的SQL已经可以支持UDF分区裁剪的能力了。其逻辑是当提交的SQL存在UDF的时候,会首先将UDF单独提取出来执行,将UDF的执行结果拿到以后再和原来的查询语句进行拼装再提交。这样一来,当存在动态不肯定的信息时,首先会解析动态信息,再肯定分区范围,从而进行分区裁剪,尽可能减低数据扫描所产生的费用。其开发方式就是在UDF中加一些参数,就可以使得UDF支持分区裁剪。

新功能:SQL-生成建表DDL语句功能
不少开发者都有将项目中数据表的DDL导出来的需求,新版本的MaxCompute也提供了兼容Hive的SHOW Create table + 的方式。从下图中的案例也能够看出,使用SHOW Create table + 以后就可以得到该表的DDL的脚本,经过这种方式就可以实现重建表或者作表结构备份的工做。



新功能: SQL-支持指定表的列默认值
新版本的MaxCompute中也支持了指定表的列默认值。其实熟悉大数据发展历程的同窗们都应该有所了解,数据库中存在不少比较完善技术,好比在校验机制、约束条件上都提供了各类默认值可供开发者选择。而大数据技术在这些方面所作的远远不够,目前的发展趋势是在数据的质量和数据的校验等方面工做中,大数据技术愈来愈靠近数据库技术。在MaxCompute最新的版本发布中提供的DEFAULT VALUE就容许了用户建立数据表的时候去指定默认值。



在上图的代码示例中,建立了一个表T,表T中包含了a、b两列,这两列的数据类型都是bigint,而且a的默认值设为10。当向这个表中插入数据记录而且只对于字段b进行插数据的时候,MaxCompute会自动地在结果当中将a的值按照默认值补齐,其等效于同时在a列中插入10而且在b列中插入100。这样的功能在不少场景下用处仍是比较大的,好比某些字段默认设置为0或者为空的状况。

新功能: SQL-支持LIMIT OFFSET
以前的时候,不少用户也有这样的一个呼声,就是但愿在MaxCompute的SQL上面作到像MySQL、PG这些数据库同样的分页功能,可以定位到在多少行以后取多少行数据,这样的功能在数据库中是很是通用的。之前,在MaxCompute的SQL里面经过为每一行数据打一个惟一标示Row Number,再用Between And这样的方式来变相地实现分页功能。而在新版本的MaxCompute中,SQL自己就已经原生地支持了LIMIT OFFSET的语法,能够更加容易地实现分页的需求。



新功能:SQL-新增内置函数JSON_TUPLE、EXTRACT
接下来介绍MaxCompute的SQL中两个比较实用的函数——JSON_TUPLE和EXTRACT。MaxCompute自己在以前对于字符串的处理只有一个getJsonObject()内建函数,而只有这样的一个函数是比较痛苦的,由于在构建JSON串的时候每每须要屡次调用这个内建函数来获取某个节点的值。



而新增的JSON_TUPLE函数则解决了这些问题。使用JSON_TUPLE首先能够得到一个JSON字符串,该函数的参数则能够是多个动态的参数,好比想要获取10个节点的值就能够带10个参数,并且还适合使用嵌套式数据,所以JSON_TUPLE未来也会成为开发者使用较多的内建函数。此外,新版本MaxCompute的SQL中还支持了EXTRACT函数,可以按年、按月、按日、按小时、按分钟来截取日期。由于对于日期的处理也属于高频操做,所以EXTRACT函数也将会被高频地使用。

新功能-分区管理
除了前面提到的MaxCompute在SQL中的一些加强功能以外,新版本的MaxCompute还提供了一些其余的能力,好比分区管理的能力。在分区管理部分,一个比较重要的场景就是因为开发者每每喜欢使用较多的分区,而当数据量大的时候可能会形成多级嵌套分区,所以表的分区数量就会很是庞大。而MaxCompute自己对于分区数量存在一个上限,当数据分区过多的时候就须要将历史过往的分区进行合并,而且删除没必要要的分区。



分区管理的最佳实践就是在数据比较“热”的状况下,分区切分得可能会比较细,当数据沉淀时间比较长的时候,过往的历史数据被访问的频率就会比较低,所以能够经过分区归并的方式减小分区的数量。过去删除分区的时候也是比较痛苦的,须要每次经过drop partition来删除一个分区,而如今MaxCompute在drop partition命令里面也支持了一次删除多个分区的能力,能够经过一次操做删除多个分区。

新功能-预付费资源监控报警
预付费资源监控报警是MaxCompute近期发布的一个新功能。阿里云MaxCompute的不少用户使用的都是预付费的固定CPU大小的资源组,在这种场景下,用户每每会更加关注购买的资源是否过多,在业务高峰期可否将其充分地利用起来,是否须要须要扩容或者缩容等。与此同时,用户还须要对于一些关键任务进行监控,好比在做业排队比较严重,产生积压的状况时,也但愿可以经过监控报警系统得到排队积压信息,而且及时告警,从而更加利于人工及时进行干预,保证当核心业务出现问题时可以获得及时处理。



MaxCompute所提供的预付费资源监控报警能力基于阿里云所提供的云监控服务,而且结合了配额组CPU使用量、做业等待等待数、内存使用量、总体CPU使用率等一些关键指标,经过对以上这些指标进行规则配置,就能实现对于关键事件的短信通知以及实时告警,从而帮助用户更好地管理和使用资源。

新功能-IP白名单支持IPV6
目前,IPV6已经成为阿里云总体都会支持的能力,而MaxCompute自己也支持了IPV6。对于IP白名单这个安全特性而言,过去MaxCompute支持IPV4,目前也扩展支持了IPV6,使用方式与本来的IPV4差别不大,经过白名单列表的设置就可以同时支持IPV4和IPV6。机器学习


新规格:预付费套餐(计算资源+存储资源)发布
前面为你们介绍了MaxCompute在新版本的发布中的一些功能,接下来将为你们介绍MaxCompute的一种新规格。新版本的MaxCompute中推出了预付费套餐(计算资源+存储资源)的规格。对于MaxCompute而言,主要有两种付费形式,其中一种是按量付费,这种方式具备极致的弹性,而且可以自动伸缩;另一种是按做业付费,这种方式比较符合指望的财务支出,在性价比方面更具备优点。



本次新发布的预付费打包套餐和以前的固定资源配额都属于固定规格预付费方式。预付费套餐的售卖方式为混合付费,在开通时以包年包月方式购买计算资源(主要为CU)和存储资源。使用时,公网下载流量和超出的存储容量按使用量收费。整体而言,预付费套餐至关因而对用户的优惠套餐,相比于企业客户在线下自行搭建的大数据经常使用配置的计算和存储规模,阿里云本次所推出的预付费套餐将会提供一个十分具备竞争力的价格,这样一来既可以保证企业每个月的财务支出比较稳定,同时也可以提供较高的性价比。

体验优化:文档持续优化及最佳实践指引
MaxCompute团队一直以来都很是注重产品文档的质量和体验,也在进行着持续地优化,并在社区中也和广大的开发者保持着密切的交流和互动,获取了开发者在MaxCompute产品使用以及产品如何应用到生产的过程当中的一些需求。MaxCompute团队近期也将一些重点的、高频的问题沉淀下来,造成了文档化、案例形式的实践指导,发布到了官网上面。



这些文档包含了如何基于MaxCompute构建和优化数据仓库,同时也提供了一些数字化运营的具体案例,好比如何基于MaxCompute搭建互联网在线的运营分析平台。此外,由于Python生态广受欢迎,开发者也是人数众多,所以PyODPS也受到了不少Python开发者的支持,经过前一个阶段的反馈,MaxCompute团队也发现PyODPS在文档方面存在一些不足之处,所以近期也作了专项整理。MaxCompute团队整理了PyODPS的一些指导文档和具体示例,你们能够到官网上去查看最新发布的指导文档和案例。

新功能内测:元数据服务Information_Schema
前面分享的是MaxCompute新版本中的一些线上可用的功能,而在实际上还有一些功能目前处于内部定向邀请测试阶段,这些功能也是社区中不少开发者以及企业客户所很是看重的功能。这里为你们介绍两个处于内测阶段的功能,其中第一个就是元数据服务。MaxCompute自己是一个多租户的系统,用户使用的时候很是但愿将更多的数据以更加友好的方式开放给使用者,可以帮助使用者自助地了解项目中的一些信息,其中比较常见的就是元数据信息,好比Table、Partition、Column、UDF、Resource、User等信息。以往这些信息都是经过命令的方式获取,可是当元数据量很是大的时候,很难经过这种方式去得到或者检索和过滤信息。而在传统的数据库技术领域有很是多的解决方案,所以MaxCompute中也提供了Information_Schema这样的一套服务,在遵循规范的基础之上也添加了一些MaxCompute特有的视图和字段,既可以知足开发者原有的一些使用习惯,也可以更好地结合MaxCompute自己的一些特色。



经过内建服务,MaxCompute首先会为用户提供一个Information_Schema库,用户能够去自助地去访问相关的元数据信息,好比项目中的表格、字段、视图、建立人、建立时间以及表的大小和生命周期等。经过这种方式就可以对于表的全局信息有一个很好的把控。与此同时,MaxCompute也会提供准实时的做业历史明细的查询能力。做业历史包含了平常的实例信息、SQL的做业明细等。以往是经过show instance等命令获取近期执行做业的信息,而现在能够经过对于视图的查询方式来获取本项目全部做业信息,而且可以经过一些过滤条件筛选出本身所须要的做业信息。所查询出来的信息则包括了项目类、项目名称、做业提交时间、做业状态、做业的SQL语句、数据的扫描量、复杂度以及资源消耗等信息,基于对于这些信息的统计就可以实现不少的性能优化以及诊断等相关工做。元数据服务Information_Schema这样的能力也会在近期面向全体云上用户进行公测。

新功能内测:基于ActionTrail的行为审计日志服务
另外一个要介绍的处于内测阶段的功能就是基于ActionTrail的行为审计日志服务。对于阿里云MaxCompute团队而言,常常会有企业提交工单但愿可以帮助他们检查一下某张表的数据被谁删除了,或者某个帐号近期是否进行了数据下载。所以,MaxCompute也将要推出基于ActionTrail的行为审计日志服务,这款服务可以完整地记录项目内的用户操做行为,并经过接入阿里云Action Trail服务将MaxCompute用户行为日志实时推送给客户,知足客户实时审计、问题回溯分析等需求。被审计的行为包含了对于表的建立、删除以及对于表结构的变动、写入数据、下载数据等,而日志信息也包含了企业比较关心的客户端信息、操做的具体SQL内容、提交人、提交时间等关键信息。
函数


原文连接
本文为云栖社区原创内容,未经容许不得转载。工具

相关文章
相关标签/搜索