MaxCompute(原ODPS)是阿里云自主研发的分布式大数据处理平台,为用户提供了开放的编程接口和 SDK,允许用户在其强大灵活的存储和计算能力之上开发自己的数据应用和系统,创造更大的价值。 为了能让这一过程更加顺畅高效,随着 MaxCompute 2.0 的发布,我们提供了 MaxCompute Studio,一套基于流行的集成开发平台 IntelliJ IDEA 的开发插件,让用户在集成开发环境(IDE)中更方便地进行数据开发。
MaxCompute Studio 为开发者提供了良好的开发体验,支持 MaxCompute 项目浏览、SQL 脚本、用户自定义函数(UDF)、 MapReduce 程序的开发和智能提示、作业执行状态展示等功能,本文将展开进行介绍。
MaxCompute 项目浏览器 (Project Explorer)
MaxCompute 通过表(Table)来存储数据,以项目空间(Project)的形式来组织表和用户自定义函数(UDF)等其他资源。开发者在开发过程中会经常需要访问项目空间:列举表、查询表结构和元数据、预览表中现有数据、向表中导入导出数据等。以前这些操作主要都只能通过命令行工具或者管理员的管理工具才能获得,现在开发者都可以通过 MaxCompute Studio 提供的项目浏览器(Project Explorer)来完成这些操作。
在 IntelliJ IDEA 中安装 MaxCompute Studio 后,可以在 MaxCompute Project Explorer 窗口中添加一个到 MaxCompute 项目空间的连接,输入用户 AccessID/AccessKey 以及项目空间名称和 Endpoint 以后就可以在 Project Explorer 中浏览项目空间的表、视图、自定义函数、资源文件等信息。 双击一个表可以可以查看对应的表结构(Schema)和预览数据(如上图所示)。
所有在 MaxCompute Studio 添加过的项目连接,都会在用户本地的文件系统生成一份表结构的缓存,但不包含数据。有了这份本地缓存,即使在断网的情况下,MaxCompute Studio 也可以为用户在编写 SQL 代码时提供数据定义、数据类型等方面的检查和提示。用户可以在网络联通的情况下通过手动刷新的方式更新本地缓存。Studio 也会在用户出现由于数据表结构不对引起的编译检查错误时提示用户刷新缓存,与 Server 端的 Schema 保持一致。
通过 Project Explorer,开发者可以非常轻松地了解工作的项目空间中的数据表的结构和数据,通过搜索功能迅速找到想要查看的表。除此之外,开发者也可以利用 Project Explorer 来查看用户自定函数(UDF)的函数声明甚至源码。在 Project Explorer 中找到定义在项目空间中的 UDF,可以看到所有的函数声明,双击就可以在 IDE 中查看反编译后的函数代码。如果开发者本地有原有的源代码,也可以在 IDE 中进行关联,修改后可以重新上传到服务器。
Project Explorer 提供了数据上传下载的用户界面,可以方便地把本地数据上传到 MaxCompute 或者下载已有的预览数据。如果觉得这还不够,用户完全可以在集成的 IDE 中通过右键菜单打开一个 MaxCompute 客户端窗口,进行各种熟悉的命令行操作,如下图所示。
增强的 SQL 代码编辑器
MaxCompute 支持通过 SQL 查询语言来访问和处理系统中的数据。脚本编辑是 Studio 提供的核心功能之一,充分利用本地编译生成的抽象语法树(AST)来提升脚本开发效率和开发体验。提供智能代码提示,语法高亮,语法检查,风险及错误提示,类型检查等一系列功能。我们的目标是让开发 SQL 以及用户自定义函数(UDF)拥有和其他高级编程语言一样的高效体验。下面将对 Studio 中的代码编辑功能作出详细介绍。
脚本管理功能
基于 Studio,用户可以 Intellij Project 的方式本地管理 SQL 脚本。在 IntelliJ 环境中创建一个 MaxCompute 开发项目,可以和其他 Intellij Module 一样获得 IDE 提供的代码管理的各种功能:如 Git 集成,运行配置管理,编译输出文件管理等。 熟悉 IntelliJ 的开发者可以很容易地用自己熟悉的方式开发和管理 SQL 程序。
代码补全功能
Studio 提供了基于抽象语法树(AST)的代码补全功能,能够根据脚本上下文及关联的 MaxCompute Project 给出智能提示,从而大大提高脚本开发效率。让你摆脱写 MaxCompute SQL 的白板时代,再也不用来回对照 Table Schema 来编辑脚本了。
关键字提示及补全
基于元数据的 Table name 补全
基于元数据的 Table column 补全
Function name 补全,可查看参数列表
语法高亮功能
Studio 提供基于语法树的语法高亮功能,允许用户为不同类型 token 配置不同的高亮方案,极大地增强了代码的可读性,提升开发舒适度。与一般通用的编辑器提供的语法高亮不同,Studio 可以根据上下文识别 token 的特定类型,给予不同的高亮显示,比如 count
可以作为关键词也可以作为函数名出现,Studio 可以识别不同的语境。 对于存在或者不存在的 Table,Studio 也能以不同颜色进行标识。
如下图所示:
与 Intellij IDE 对 Java 语言的高亮配置类似,MaxCompute SQL 脚本语法高亮的配色也可由用户自己配置。在 Preference 配置面板中,用户可以为不同类型的 token 制定语法高亮方案。
语法检查与错误提示
MaxCompute Studio 能够根据编译结果进行错误提示。脚本编辑功能与 MaxCompute 编译器高度整合,能够在脚本编辑过程中实时进行语法检查,并通过特殊高亮及 tips 文本给出错误提醒。便于开发人员快速排错,提前对位问题。
潜在风险提示
由于 MaxCompute 语法及数据类型转换的灵活性。用户在很多情况下,书写的脚本没有语法错误,但是没有得到想要的结果。针对这个痛点,Studio 会结合脚本的编译结果,给出相应的 WARNING 提示,将用户脚本中潜在的风险在开发和调试阶段给出提醒,防患于未然。 Studio 对相关风险部分给予语法高亮展示并给出详细说明,如:
本地编译与错误定位
Studio 提供脚本本地编译功能,在提交到服务器上运行之前在本地进行必要的语法检查、类型检查等,编译过程信息通过 Compiler View 窗格展现给用户。本地编译可以提前发现脚本中的错误,大大减少错误脚本在服务器端无效运行的比率。MaxCompute 开发者之前经常遇到的一个痛点就是一个多语句的脚本,可能前面的语句执行正常,但是在后面的一条语句有语法或者类型错误,导致整个作业失败,而且浪费了前面成功语句的执行时间和资源。 使用 Studio 提供的本地编译功能,就可以通过提交前的本地编译一次性地发现脚本中所有的语法与类型错误,快速定位和解决。 双击编译结果窗口中的 Log Item,可以快速定位到脚本的对应行列位置,直接进行修复。
脚本提交与状态反馈
Studio 中编辑好的脚本能够直接在 IDE 中提交执行。点击编辑器上方工具条中的绿色执行按钮即可提交到脚本关联的 MaxCompute 项目空间排队运行。提交执行的脚本可以实时查看运行状态,查看执行计划图,可以在 Running Info 窗格中查看任务动态输出信息。执行结束且有输出数据的脚本,可以在 Running Result 窗格中查看输出结果。 下图展示了在 Studio 中提交的脚本的运行状态:
Table schema 提示
脚本编辑器中,通过鼠标悬停的方式可以查看一个 Table 的 Schema 信息,包含 Table 所有列及列数据类型信息,方便用户开发。
变量引用检查
Studio 会根据上下文对变量引用做类型检查,对于错误的引用给出提醒
UDF 签名检查
脚本编辑过程中,Studio 会对 UDF 的函数签名进行实时检查,对参数类型或数量不匹配的场景给出错误提示。
MaxCompute 作业浏览器 (Job Explorer)
作为开发者,经常需要关心自己提交到 MaxCompute 服务器上的作业执行状况。 MaxCompute Studio 提供了 Job Explorer 来管理、展示用户所在项目空间中的作业详细信息。
查看 Project 下所有作业实例
通过 Job Explorer 窗口,用户可以一目了然地获得自己提交的所有历史作业的列表。列表可以通过项目名称,以及历史跨度等条件进行过滤。 提供卡片和列表两种方式进行展示。
使用作业查询过滤器
在 Project 下拉框中选择对应的 Project,点击 Refresh 按钮,列出对应项目上所有用户自己提交的作业列表,所有在 Project Explorer 中建立了连接的 Project 均可以查找到。查询的时间跨度可以调节,最长可以查询距当前时间 7 天的历史作业记录。
通过 Logview URL 以只读方式打开作业详情
使用 Logview 来查看一个作业的详细信息是 MaxCompute 用户熟悉的方式。使用 Logview 还有一个便利之处是可以查看其他用户在其他项目空间中提交的任务状态。 在 Studio 中我们也提供了通过输入一个有效的 Logview URL 打开任意一个作业详情的功能。
展示作业详情
在 Job Explorer 双击作业卡片或者作业列表中的一个作业,或者输入有效的 Logview URL,可以打开该作业的详情页面。如图所示:
在作业详情页面中包含五个标签页: 可视化、概要(JSON)、概要(文本)、SQL和执行结果。
- 可视化标签页:负责展示作业的执行关系图,Tasks 列表,及各个 Tasks 对应的具体的计算任务列表和详细信息。作业执行关系图可以展示作业 Task 之间的执行逻辑,双击每个 Task 节点可以进一步展开查看任务的执行算子。在页面右侧的任务列表中可以查看每个计算单元具体的计算任务的执行情况,点击右键还能够把列表导出或者查看进一步的标准输出(stdout)和标准错误输出(stderr)的信息。
- 概要(JSON)标签页:作业概要的 Json 信息,包含完成的作业输入输出参数等
- 概要(文本)标签页:作业概要的文本信息。
- SQL 标签页:显示提交作业的 SQL 源代码
- 执行结果标签页:以表格形式显示作业的结果输出
免费下载、安装 MaxCompute Studio
现在就可以免费下载、安装 MaxCompute Studio。
- 需要 JDK 1.8
- 需要 IntelliJ IDEA 14.1.4 以上版本 (可以在 https://www.jetbrains.com/idea/ 下载免费社区版)
- 在 IntelliJ IDEA 中打开 File | Settings | Plugins, 点击 Browse repositories... 按钮
- 搜索 “MaxCompute Studio", 安装 MaxCompute Studio 插件
- 完成安装,重新启动 IntelliJ IDEA
后续功能展望
MaxCompute Studio 致力于为用户提供更好的海量数据应用开发体验,目前后续版本已经在开发中。我们将在后续版本中提升 Project Explorer 的项目管理功能;提供更加丰富的 SQL 智能编辑支持;提供与 Web 版本 Data IDE 的集成,管理用户的工作流;提供 UDF 的开发和在线调试功能等。 相信我们能给广大开发者的数据开发之路助上一臂之力。