深入阿里云大数据IDE–MaxCompute Studio

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 在云栖社区主办的云栖计算之旅第5期–大数据与人工智能分享中,阿里云计算平台高级专家薛明为大家深入地介绍了阿里云大数据IDE–MaxCompute Studio,并对于其特性和背后的技术思想进行了讲解。
摘要:在云栖社区主办的云栖计算之旅第5期–大数据与人工智能分享中,阿里云计算平台高级专家薛明为大家深入地介绍了阿里云大数据IDE–MaxCompute Studio,并对于其特性和背后的技术思想进行了讲解。

本文根据演讲视频整理而成。

本次将与大家深入地分享阿里云数加平台的大数据开发套件——MaxCompute Studio。其实对于开发者而言,在大数据开发、数据处理以及管理作业时经常会使用到IDE,而在阿里巴巴内部也有上万名大数据开发者,他们也会使用数加平台,也就是阿里巴巴统一的计算引擎——MaxCompute,在MaxCompute之上其实存在一个统一的数据仓库,这个数据仓库中包含了阿里巴巴全部的数据,各个事业部都可以利用数加平台进行大数据应用的开发。而MaxCompute Studio就是针对于MaxCompute的大数据开发套件。

我们为什么需要Data IDE
e722eb9099fca0d55ada97e0addf4c5688193695
如同编写Java或者其他语言的程序一样,开发者一开始可能会使用文本编辑工具来编写程序,但是随着需要处理的任务变得越来越复杂,就可能会需要使用IDE。同样在数据发展到足够复杂的时候,需要处理的数据也变得非常多,这些数据往往需要用不同的模式进行处理,所以在进行数据处理时往往需要这样的IDE去帮助开发者完成工作。在整个数据平台里可能会存在数据的采集和传输过程,但是对于开发者而言,在真正在线上进行数据处理的时候,可能需要一些使用工具把数据漏到开发环境中,然后在本地进行做工作来验证数据处理逻辑,这样就可以实现在真正的计算环境和数据仓库中进行验证。除此之外,当作业出现问题的时候也需要有足够好的工具进行分析和管理。这些其实都是对于开发者而言需要面对的问题,所以阿里云也希望通过统一的开发工具或者IDE环境来解决上述的问题。

大数据开发套件:MaxCompute Studio
本次分享将为大家介绍目前阿里云在大数据开发中使用的一种工具——MaxCompute Studio,这个工具是面向MaxCompute计算引擎开发的数据处理开发工具,但是目前还不能够覆盖像实时处理以及ADS这些其他的计算引擎,现在只支持离线计算这部分,但是之后或许能够推广到更大的范畴中。
fc7174b981c32978da923dbcaf889aa18e9c3d55

今天的分享将主要围绕以下三个方面为大家介绍大数据开发套件MaxCompute Studio的几个特点以及其背后的实现技术。
99c925839148a96f73b13369bb3190ae2fd4ecdc
  1. 智能编辑器,本质上而言MaxCompute Studio是一个IDE,如同在编写C++或者Java程序时需要用到IDE一样,编写离线数据处理中常用的SQL以及Hive也需要一个智能编辑器,MaxCompute Studio是基于MaxCompute 2.0新一代引擎的编译器,可以提供上下文相关的代码补全、实时错误提示以及本地编译。
  2. 调试器,当代码出现问题时,开发者可以通过MaxCompute Studio进行远程的调试和处理。MaxCompute Studio可以建立IDE与远程计算集群的安全调试通道,并提供一键触发调试在集群中失败的任务的功能。
  3. 作业分析,MaxCompute Studio除了可以帮助开发者进行调试外,还可以进行相关的问题分析,也可以为开发者提供一些相关视图和分析工具,可视化地展现数据作业的执行计划,通过快速回放、关键路径分析等帮助用户定位性能问题。


智能编辑器-SQL

7bcd3bddcbd7e955448cc3708ad7ea5fe6d1c45c

首先谈一下智能编辑器,因为对于离线数据处理而言,主要面对的是SQL开发,很多数据分析师以及数据处理或者应用的开发者都会涉及到写SQL程序,而且在MaxCompute平台上可能还会支持使用Java或者Python写一些数据的处理逻辑,这时候IDE可能会更加适合这样的场景。因为可能需要写SQL、Python、Java等,而其实这些都可能通过传统的IDE提供很多非常成熟的功能,比如IDE往往会对于Java程序开发的一些模板和语法提供支持,但是对于SQL而言,就需要通过统一的数据仓库和数据引擎结合起来对于已有的开发环境进行扩展,MaxCompute Studio的扩展是在目前比较流行的IntelliJ开发平台进行的。之所以选择IntelliJ是因为其有比较完备的支持扩展的机制,可以在这个IDE上面扩展出MaxCompute引擎所支持的语法特性。可以看到MaxCompute Studio可以支持SQL的语法以及语法的高亮,还可以实现代码补全等功能。开发者可能对于SQL的语法并不熟悉,而MaxCompute Studio则可以给出关键词提示。更重要的是在MaxCompute Studio中可以集成元数据,这样就可以在编写SQL语句时可以自动帮助开发者对于表格、字段以及函数进行提示。另外一点就是对于大型作业而言,往往提交到服务器之后执行了几个小时发现一个语句出错造成了整个作业的失败,而这些数据也都白跑了,并且这个错误往往是一个非常简单的类似于数据类型不匹配的错误,其实在本地可以通过IDE提示发现这个表不存在或者该列类型与所需类型不匹配的问题,开发者可以立即发现错误并随时进行修改。综合起来,在MaxCompute Studio中写SQL以及在SQL里面嵌入Java或者Python的逻辑代码以后仍然可以在统一的IDE中进行编译,这部分的编译是与在服务器端的语法检查、类型检查以及更加复杂的一些逻辑判断一致的,而这些工作也都可以在本地进行,并且发现问题可以直接跳转到相应的地方进行修改,这样就可以大大减少数据的提交次数。其实有时对于一些数据计算而言,可能是需要付费的,这样就节约了成本,而在比如在像阿里这样公司中,虽然提供了统一的资源供大家使用,但是总是在平台上运行错误的代码可能就会造成资源的极大浪费,如果能够在本地进行检查就可以大大降低资源的消耗并且提高效率。

智能编辑器背后的编译器支持
99cc47acb3a816b8a85b8d23c33725ce6365befc
接下来分享一下做智能编辑器这件事情的背景以及其背后所使用的技术。选择在本地实现IDE其实有一个非常大的技术优势,就是本地其实具有比较强大的计算资源。而IDE对于SQL代码在本地其实是进行了预编译的,这样就将源代码转化成了语法分析树,在语法分析树之上可以抽象出逻辑的处理单元AST。之后就可以根据抽象语法树进行语法的判断,可以通过语法分析树进行类型检查。而又因为在建立了树型结构之后就可以方便地对于树进行多次遍历,所以可以通过类型检查发现语法中的错误。

所以目前就是在本地的后台就做了这样的几件事情:首先通过语法分析器和词法分析器生成了语法分析树,然后通过上下文无关文法也就是在MaxCompute中对于SQL定义的语法和扩展可以很方便地在IDE里面提供语言的新特性,比如在SQL里面要增加if-else或者loop这样语法其实只需要去更新上下文无关文法就可以了,这样就可以生成出所需要的后台表示,然后再进行相应的处理。
1c4def4f35c0103c88359b9caed612ae5c0154b7
对于具体问题而言,比如要实现刚才提到的语法高亮就需要考虑这样的几个层次,最简单的就是目前任何一个SQL都可以支持的关键词的词法高亮,但是在MaxCompute Studio中会更进一步。其实实现关键词的语法高亮很简单,只需要断出Token就可以了,但是还需要实现基于Parse Tree的语法高亮,再往后就需要实现基于AST的类型检查的语法高亮,比如图中的if是一个函数,其参数需要字符串的类型,那么此时就需要后台的抽象语法树进行判断是不是这个类型并标注相应的颜色。
7631a1a452b4a3de12d314b90ce79c9615cb4e53
在此基础之上,MaxCompute Studio还实现了很多更好用的特性,比如开发者写出关键词之后IDE就能提示和补全,而且实际上这个功能还可以做的更加智能,可以根据语法文件构建有限状态自动机并根据用户输入的上下文提供智能提示。因为IDE的后台存在语法树所以就可能判断出用户所输入的上下文是什么,而这并不任何一个编辑器都能做到的,只有真正懂文法的编辑器才能够做到。
ca713f36948dbfb98fcf26a1689030eae815c79d
刚才也提到了要对元数据进行处理,而在阿里巴巴会有一个整体的元数据仓库去管理全部的元数据。如下图所示一个项目中会有数千个project,每个project里面都会有自己的table和scheme。在本地其实可以通过缓存知道你所关心的project的元数据是什么样的,这样就可以根据元数据为编辑器提供智能化支持。
dc3adb8f9c8c8fa945740a00f47f0fe42fc43e3e
当然这里往往就会存在元数据更新的问题,比如开发者下载了一个本地的备份,而其他的同学更新、创建或者删除了一个表,那么已经下载的元数据如何进行更新呢?其实MaxCompute Studio也提供了几个机制进行更新,当开发者自己意识到自己的数据不是很新了,那么就可以进行手工地更新元数据,但是这样也无法保证本地的元数据是完全正确的,当进行编辑的时候IDE会进行语法检查,会去检查表格存不存在以及列的类型是否匹配,当出现问题的时候,IDE会自动地去服务器端将期望的元数据进行更新,可能错误开始时提示表格不存在,但是当拿到元数据之后这个错误可能就没有了。其实这样的错误在开发其他程序时也会用到,比方在开发Java程序时会引用第三方的库,而第三方库可能本身并没有下载,所以会出现某个类找不到的问题,但是当配置了Maven等库管理之后就可以自动地去做更新,这样就由原来有错变成没错了。

MaxCompute调试器
d9cb854663183192c8d4f1926c00b0132c53ae58
接下来分享在MaxCompute Studio中可以实现的调试器。当出现了任务失败的情况下,可以在IDE中看到失败的任务,然后进行DeBug,这时候在后台其实会在真正的计算集群上面重启了错误的节点,并对于出现错误的节点进行断点监听,然后在IDE中发起DeBug的会话,并通过IDE端口进行与服务器端的连接,并在服务器端重新运行出现错误的代码片,在这个地方利用IDE本身的调试器检查代码的逻辑并进行单步跟踪。其实在真正进行本地开发时会发现这是一个非常重要的问题,就是在本地运行时无错误,但是在服务器端运行数据时出现了错误,这时候开发者往往会非常头疼,因为可能是环境的问题或者是出现了脏数据等造成的影响,而通过IDE就可以很方便地对于问题进行定位。

对于调试器的方案设计可能就有以下的几种了。其实可以下载VM到本地,将计算节点复制一份就可以反复运行任务,或者在本地模拟一个计算环境,但是这些都不是非常完美的解决方案,都有缺点存在。可能需要下载非常庞大的环境,比如像阿里的计算节点往往有非常庞大的运行环境,所以不会很容易就下载下来。而本地运行可以做非常简单的计算环境,但是往往却和服务器端不完全一样,也无法完全复现这个问题,所以选用了Remote Attach,当出现问题的时候可以与服务器端进行Attach。
3f71e91c1352f35cd416b991270c523a2fc746be
要实现上述的功能其实可以将IDE与服务器端的DeBug连接,因为计算节点要想启动一个进程可能需要拉起的服务,所以可以与服务器端进行通信进行连接。但是要想真正地去部署时往往会出现很大的问题,因为本地和服务器端网络往往不是联通的,并且还存在安全认证的问题。为了解决安全认证连接的问题,可以现在服务器端进行安全的认证,然后通过中间的Proxy对于请求进行连接。
79628c5bac2ef2e3f056183e58a609f95e391b30
所以这样就解决了在分布式中如何在上万台机器的集群中重启UDF的JVM的环境,因为可能有数据处理的中间文件,如何将这些保存起来,以及如何支持多个用户DeBug的Proxy的扩展也是实现上的难点问题。
b6c6c6e9aeda6ad4a76206c1871c937eddd92e0c
同样在IDE里面因为有元数据,所以可以与服务器端进行连接,可以看表格或者函数的详细信息,这样在开发时就可以轻松地获取所拥有的数据信息,如果没有数据还可以集成阿里MaxCompute数据导入工具对于数据进行导入。还有一种情况就是作业提交完成之后可以展示一个脚本中多条语句的详细执行计划,这样就可以帮助开发者了解脚本中的语句在服务器端究竟执行了几步,每步都可以看到执行的过程,每一步的输入是什么、输出是什么,可以发现究竟哪一步出现了数据倾斜。并且执行完成的作业都可以被列出来,这样就可以看到作业的执行状态以及详细信息。在作业的详细信息中可以看到该作业完整的执行计划以及作业的回放,回放就是无论作业执行成功还是失败都可以以短暂的时间重新回放一遍,这样就可以帮助开发者发现作业中哪一个是瓶颈。而MaxCompute Studio在未来也会在作业分析部分提供更加丰富的功能,比如检测数据作业的关键路径或者对于历史作业的对比,以此来快速地定位问题。
f1f6dbb23d8f3bbe73d98747e3aaab5012885190

回顾今天所分享的内容,实际上阿里巴巴在统一的数据平台之上就会存在非常集中的数据开发需求,要想满足这样的需求就需要完善的工具来支持,这其实非常符合数加理念:在数据强大引擎之上需要能够真正发挥作用的工具。MaxCompute Studio就是面向大数据开发者的工具,它能够覆盖大数据开发中的开发、测试调试以及作业管理整个闭环。在编辑器上可以浏览元数据,并给出智能的语法提示,当出现问题时可以像开发Java程序为开发者从线上下载样例数据来提交SQL验证逻辑,当作业出现问题可以使用可视化的方式观察执行计划,并通过快速回放去定位问题,这样就使得在统一的数据平台上进行快速开发成为可能,同时因为存在集成的开发环境就可以在上面方便地扩展数据的应用,可以在数加平台上实现自己的数据调度和数据监测功能,还可以通过IDE对于开源资产进行管理或者迁移。


欢迎加入钉钉群与大数据专家一起交流

0ab3913721989a168cf96fb74ef6dffaae42204e

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
25天前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据生态圈体系
阿里云大数据计算服务MaxCompute(原ODPS)提供大规模数据存储与计算,支持离线批处理。针对实时计算需求,阿里云推出Flink版。此外,阿里云还提供数据存储服务如OSS、Table Store、RDS和DRDS,以及数据分析平台DataWorks、Quick BI和机器学习平台PAI,构建全面的大数据生态系统。
63 18
|
1月前
|
传感器 IDE 测试技术
C#一分钟浅谈:Visual Studio IDE 高级功能
【10月更文挑战第24天】本文从初学者角度介绍了 Visual Studio 的高级功能,包括安装与配置、创建项目、运行与调试、常见问题及解决方案(如代码格式化、重构、导航、单元测试、代码分析),以及智能感知、Live Unit Testing、代码生成和代码片段等高级功能,帮助开发者提高效率和代码质量。
37 1
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
人工智能 分布式计算 DataWorks
连续四年!阿里云领跑中国公有云大数据平台
近日,国际数据公司(IDC)发布《中国大数据平台市场份额,2023:数智融合时代的真正到来》报告——2023年中国大数据平台公有云服务市场规模达72.2亿元人民币,其中阿里巴巴市场份额保持领先,占比达40.2%,连续四年排名第一。
248 12
|
3月前
|
人工智能 Cloud Native 数据管理
重磅升级,阿里云发布首个“Data+AI”驱动的一站式多模数据平台
阿里云发布首个AI多模数据管理平台DMS,助力业务决策提效10倍
418 17
|
3月前
|
SQL 人工智能 大数据
阿里云牵头起草!首个大数据批流融合国家标准发布
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
101 7
|
3月前
|
SQL 人工智能 大数据
首个大数据批流融合国家标准正式发布,阿里云为牵头起草单位!
近日,国家市场监督管理总局、国家标准化管理委员会正式发布大数据领域首个批流融合国家标准 GB/T 44216-2024《信息技术 大数据 批流融合计算技术要求》,该标准由阿里云牵头起草,并将于2025年2月1日起正式实施。
|
3月前
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
384 10
|
3月前
|
机器学习/深度学习 数据可视化 大数据
阿里云大数据的应用示例
阿里云大数据应用平台为企业提供高效数据处理与业务洞察工具,涵盖Quick BI、DataV及PAI等核心产品。DT203课程通过实践教学,帮助学员掌握数据可视化、报表设计及机器学习分析技能,提升数据驱动决策能力。Quick BI简化复杂数据分析,DataV打造震撼可视化大屏,PAI支持全面的数据挖掘与算法应用。课程面向CSP、ISV及数据工程师等专业人士,为期两天,结合面授与实验,助力企业加速数字化转型。完成课程后,学员将熟练使用阿里云工具进行数据处理与分析。[了解更多](https://edu.aliyun.com/training/DT203)
|
4月前
|
机器学习/深度学习 分布式计算 BI
MaxCompute 与阿里云其他服务的协同工作
【8月更文第31天】在当今的数据驱动时代,企业需要处理和分析海量数据以获得有价值的洞察。阿里云提供了一系列的服务来满足不同层次的需求,从数据存储到高级分析。MaxCompute(原名 ODPS)作为阿里云的大规模数据处理平台,提供了强大的计算能力和丰富的功能,可以与阿里云的其他服务无缝集成,形成完整的大数据解决方案。本文将探讨 MaxCompute 如何与其他阿里云服务协同工作,包括存储服务 OSS、数据分析服务 Quick BI 以及机器学习平台 PAI。
60 1

相关产品

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