4、使用Intellij IDEA管理数据和资源 (难度大,选做)
1、浏览表及UDF
(1) 浏览表和函数
要浏览项目空间的表和函数,使用以下步骤:
a)、打开 项目空间浏览器(Project Explorer) ,即可以查看已添加的 Project 节点树。
节点树上方是工具栏,包括:
Ø 增加Project:新增一个到 MaxCompute 项目空间的连接
Ø 删除Project:删除一个项目空间浏览器中的项目连接,对服务器端项目空间无影响
Ø 刷新元数据:从服务器端项目空间刷新元数据信息,刷新本地元数据缓存
Ø 展开节点:展开全部树节点
Ø 折叠节点:折叠全部树节点
Ø 用户反馈:提交用户反馈
Ø 在线文档:打开在线文档
b)、双击或点击下拉箭头展开 Tables 节点,可列出该项目下的所有表(包括虚拟视图)。这里的表名列表与用户执行show tables命令相等,需要用户在project下有list table权限。函数(Functions)和资源(Resources)节点类似:
c)、Studio 会将服务上的项目元数据下载到本地,当服务端元数据有更新时,如新增了一张表,需手动触发一次刷新,将变化的元数据重新加载到本地。 可以选择在项目(Project)或表(Table)级别做刷新,步骤如下:
i、选中相应的节点; ii、点击工具栏上的刷新图标或在右键菜单中选择刷新菜单项。
(2) 查看表详细信息
用户可以通过 Studio 的 表详情视图(Table Details View) 查看数据表相信信息
a)、在节点树中,展开个表名节点,可快速查看列名和类型:
b)、双击某个表或右键菜单 Show Table Detail 可以查看表的详细信息,包括 owner,size,column 等元数据;表结构信息; 以及 data preview:
C)、通过在Tables & Views右键菜单项 Open specific entity ,可以指定表名显示详情(注意要完整表名称)。
另外如果用户没有project的list权限,而只有具体某张表的权限,也可以通过这种方式将该表抓取下来。
函数(Functions)及资源(Resources)类似。
Intellij IDE 默认支持搜索,可展开表后直接敲击键盘模糊搜索。
d)、当想知道某张表在哪些script中用到时,可以右键该表,使用Find Usages功能。
(3) 查看函数详细
a)、在 Functions 树节点下可以展开某个函数节点,以显示该函数的方法签名
Python UDF解析签名需要安装pyodps(MaxCompute python sdk),具体的先安装pip: sudo /usr/bin/python get-pip.py
(请自行google下载get-pip.py),然后安装pyodps: sudo /usr/bin/python -m pip install pyodps。
需要注意的是mac系统自带一个python,位置在/usr/bin/python,请将pyodps安装在这个位置
b)、在 Functions 树节点下双击某个函数节点(或在 Resources 下双击改函数对应的源码资源)可打开该函数对应的的代码。
2、导入导出表数据
Studio 可以将 CSV,TSV 等格式的本地数据文件导入到 MaxCompute 表中,也可将 MaxCompute 中表数据导出数据到本地文件。
Studio 是通过 MaxCompute 平台提供的批量数据通道(Tunnel)功能完成的
使用须知:
Ø 导入导出数据采用 MaxCompute Tunnel 服务,因此要求 Studio 中添加的 MaxCompute Project 必须开通或配置了 Tunnel服务。
Ø 导入导出表必须具备相应权限。
(1) 导入数据
a)、打开 项目空间浏览器(Project Explorer) 窗口,在表名上点击右键或在表详细页面的 Data Preview 中字段属性上右键,选择 Import Data Into Table。
b)、在弹出的 Import Data 对话框中,选择导入数据文件的路径,列分隔符,大小限制,错误容忍行数等参数,点击按钮 OK。
c)、提示 Import Data Success,表示数据导入成功,可在表中查看导入的数据。
(2) 导出数据
a) 启动导出表数据有两种方式:
方式一、在表名上右键,选择 Export Data From Table
方式二、在表详细页面的Data Preview 中字段属性上右键,选择 **Export Data From Table
b)、弹出Export Data对话框,选择导出数据文件的保存路径,列分隔符,大小限制,错误容忍行数等,填写完成后点击OK。
c)、提示 Export Data Success,表示数据导出成功,可在目标文件中看到导出的数据。
d)、用户也可以在 Table 的 Data Preview 窗格中选择右键菜单 Export Grid Data 导出数据。
5、使用Intellij IDEA开发SQL程序(难度大,选做)
1、创建 MaxCompute Script Module
开发MaxCompute Script前,需要创建一个MaxCompute Script Module,有两种方式创建:
方式一、本地没有script文件,可通过Intellij创建一个全新的Module。
a)、 File | new | project… 选择module类型MaxCompute Studio,点击Next:
b)、输入项目名,点击Finish:
c)、至此,一个能开发脚本的MaxCompute studio工程已建立,如下图:
方式二、本地某个文件夹下已经有很多script,譬如从服务器上下载下来的,此时需要用studio来编辑这些script时,可以直接打开一个Module。
a)、在script文件夹下创建一个MaxCompute的连接配置文件odps_config.ini,在里面配置与MaxCompute连接的鉴权信息:
b)、在IDEA里File | open 选择您的script文件夹。
c)、Studio会探测该文件夹下是否存在odps_config.ini文件,根据这个文件里的配置信息抓取服务端的meta,然后编译文件夹下的所有script。
2、编写 SQL 脚本
MaxCompute Studio 模块创建完成后,就可以开始编写MaxCompute SQL脚本了,具体步骤如下:
a) 在scripts目录右键,选择 New | MaxCompute Script File:
b)、在弹出的New MaxCompute SQL Script对话框中输入脚本名和绑定的MaxCompute 项目,
下拉框中的项目列表是从MaxCompute Project Explorer窗口中添加的,点击OK。用户也可以点击+,添加MaxCompute 项目连接
c)、在打开的Script Editor中编写sql,Studio提供语法高亮,智能提醒,错误提示等功能。
3、提交 SQL 脚本
Studio 可直接将 MaxCompute SQL 提交到服务端运行,并显示查询结果,执行计划等详细信息。Studio 提交前会进行编译,能够有效避免提交到服务端后才发现编译错误。
使用须知
Ø 首先创建 MaxCompute 项目连接,并绑定目标项目。
Ø 创建 MaxCompute Studio Module。
提交前设置
Studio提供了丰富的设置功能,可在Editor编辑页面上方的Tool Bar工具栏中快速设置。设置主要分为三类:
编辑器模式:编译器模式设定包括两种模式,脚本模式和单步模式。
Ø 单步模式会将提交的脚本文件按;分隔,逐条提交到服务端执行。
Ø 脚本模式为最新开发模式,可将整条脚本一次提交到服务端,由服务端提供整体优化,效率更高,推荐使用。
· 类型系统:类型系统主要解决SQL语句兼容性问题,分为:
Ø 旧有类型系统:原有 MaxCompute 的类型系统
Ø MaxCompute类型系统:MaxCompute 2.0 引入的新的类型系统。
Ø Hive类型系统:MaxCompute 2.0 引入的 Hive 兼容模式下的类型系统
· 编译器版本:Studio提供稳定版编译器和实验性编译器两种模式。
Ø 默认编译器:稳定版本。
Ø 实验性编译器:包含编译器最新特性,尝鲜使用。
ToolTips:脚本提交设置可采用全局设定,打开File | Settings | MaxCompute | MaxCompute SQL,其中Compiler | Submit中可以设置以上属性。
提交SQL脚本
a) Editor上方工具栏中提供同步,编译,提交功能。
Ø 同步功能:更新sql脚本中使用的元数据,包括表名、UDF等。如果studio提示表或函数找不到,而服务端又明确存在时,可尝试使用该功能更新元数据。
Ø 编译、提交:按MaxCompute SQL预发规则编译或提交到服务端,编译错误会在MaxCompute Compiler窗口中显示详细信息。
b) 点击工具栏上的绿色运行图标,或者在Script Editor中右键选择Run MaxCompute SQL Script,即可提交到服务端。当sql中存在变量时(如下图的${bizdate}),会弹出对话框,让你输入变量值。
c) 脚本会先被本地编译(依赖于你在Project Explorer窗口中添加的项目元数据),无编译错误后就会提交到服务端执行。Studio提供了几个窗口来显示执行的详细信息:
Ø MaxCompute Compiler窗口:显示脚本的编译详情。
Ø Compile Result主窗口:显示脚本的SQL statement和POT图(脚本处于running状态时可以点左上角的cancel按钮来终止)。当提交多条SQL语句时,会产生多个Statement,点击某个Statement图,下面的MaxCompute Job窗口显示的就是该语句对应的运行日志。右侧的POT图可双击查看其详细执行计划。
MaxCompute Job窗口:日志标签页->显示脚本当前的执行进度日志;结果标签页->显示脚本的执行结果(如果有执行结果的话)。
6、使用Intellij IDEA开发Java程序 (难度大,选做)
1、创建 MaxCompute Java Module
MaxCompute Studio能支持用户开发java UDF和MR,首先需要新建一个MaxCompute Java Module。
a) 创建module
依次点击 File | new | module module类型为MaxCompute Java,配置Java JDK。点击next,输入module名,点击finish。
studio会帮用户自动创建一个maven module,并引入MaxCompute相关依赖,具体请查看pom文件。
b)、 module结构说明
至此,一个能开发MaxCompute Java程序的module已建立,主要目录包括:
Ø src/main/java:用户开发java程序源码。
Ø examples:示例代码,包括单测示例,用户可参考这里的例子开发或编写UT。
Ø warehouse:本地运行时需要的schema和data。
2、开发UDF
开发UDF
a) 在module的源码目录即src->main上右键new, 选择MaxCompute Java。输入类名,如myudf.PlusHello,选择类型,这里我们选择UDF,点击OK。
b) 模板已自动填充框架代码,只需要编写UDF的入参出参,以及函数逻辑。
调试
UDF开发好后,下一步就是要测试自己的代码,看是否符合预期,我们支持两种方式:
单元测试:在examples目录下有各种类型的单测实例,可参考例子编写自己的UT。
Ø 本地运行UDF:本地运行时,需要指定运行数据源,有两种方式设定测试数据源:
Studio通过Tunnel服务自动下载指定项目下的表数据到warehouse目录下,最多下载10000条数据。
提供Mock项目及表数据,用户可参考warehouse下example_project自行设置。
a) 运行UDF:在editor中UDF类上右键,点击”运行”菜单,弹出run configuration对话框。UDF|UDAF|UDTF一般作用于select子句中表的某些列,因需要配置MaxCompute project,table和column(元数据来源于project explorer和warehouse下的Mock项目)。
b) 点击ok,如果指定项目下的表数据未被下载到warehourse中,则首先下载数据,如果采用Mock项目或已被下载则直接运行。
UDF的local run框架会将warehouse中指定列的数据作为UDF的输入,开始本地运行UDF,用户可以在控制台看到日志输出和结果打印。
关于本地运行的warehouse目录:本地warehouse用于存储表(包括meta和数据)或资源,用于本地执行UDF或MR。
warehouse目录下依次是项目名,tables,表名,表schema和sample data。
3、开发MapReduce
开发MR
a) 在module的源码目录即src->main上右键new,选择MaxCompute Java。
b) 分别创建Driver,Mapper,Reducer。
c) 模板已自动填充框架代码,只需要设置输入/输出表,Mapper/Reducer类等即可。
调试MR
MR开发好后,下一步就是要测试自己的代码,看是否符合预期,我们支持两种方式:
单元测试:在examples目录下有WordCount的单测实例,可参考例子编写自己的UT。
本地运行MR:本地运行时,需要指定运行数据源,有两种方式设定测试数据源:
· studio通过tunnel服务自动下载指定MaxCompute project的表数据到warehouse目录下,最多下载10000条数据。
· 提供mock项目(example_project)及表数据,用户可参考warehouse下example_project自行设置。
a)、运行MR: 在Driver类上右键,点击”运行”菜单,弹出run configuration对话框,配置MR需要在哪个MaxCompute Project上运行即可。
b)、点击ok,如果指定MaxCompute project的表数据未被下载到warehourse中,则首先下载数据;
如果采用mock项目或已被下载则跳过。接下来,MR local run框架会读取warehouse中指定表的数据作为MR的输入,
开始本地运行MR,用户可以在控制台看到日志输出和结果打印。
7、与MaxCompute客户端集成
MaxCompute Studio集成了MaxCompute客户端程序,可在Studio中直接打开客户端。
配置客户端安装路径
Studio中已包含最新版MaxCompute客户端程序,并指定为默认客户端。用户也可自行指定其他版本客户端程序,
设置位置为:Intellij Settings | MaxCompute Studio | SDK & Console 中添加客户端程序跟路径。
2. 设置成功后会显示MaxCompute客户端版本信息。
3.
4. 打开MaxCompute客户端
设置MaxCompute客户端安装路径成功后,就可以在Studio中打开客户端程序。
1、在项目浏览列表中,选中要打开的项目,右键菜单中点击Open in Console。
2、用户可以打开多个客户端程序,操作步骤同上
####8、配置MaxCompute Studio
MaxCompute Studio 配置选项页
MaxCompute Studio 配置选项页提供以下配置项:
本地元数据仓库存储路径 指定在本地存储 MaxCompute 项目空间元数据的路径。Studio 的缺省设置是本地用户目录下的 .odps.studio/meta 这个隐含目录。
版本更新选项
· 复选框 Automatically checks for new version 可以控制 Studio 是否自动检查新版本更新
· 按钮 Check new versions 用于手动检查新版本。 点击检查新版本按钮后,如果有新版本可以更新,将显示 Install new version 按钮,
点击可以安装,安装完成后需要重启 IntelliJ IDEA。
SDK & Console 配置选项页
SDK & Console 配置选项页面提供以下配置项:
MaxCompute 客户端安装路径
指定本地安装的 MaxCompute 客户端的安装路径。 Studio 会检测路径中安装的 MaxCompute 客户端的版本,如果检测失败,会提示错误信息。
Studio 2.6.1 之后的版本自带了最新的 MaxCompute 客户端,用户不用特别指定。 如果用户希望使用自己特定版本的 MaxCompute客户端,可以指定路径。
MaxCompute SQL 配置选项页
MaxCompute SQL 配置选项页面提供以下配置项:
启动语法高亮 勾选 Enable syntax coloring 选项,启动语法高亮功能。
启动代码自动补全 勾选 Enable code completion 选项,启动代码自动补全功能。
启动代码格式化 勾选 Enable code formatting 选项,启动代码格式化功能。
编译器选项 在这里这是全局缺省的编译器选项。 以下选项还可以在 SQL 编辑器的工具栏上为每个文件单独设置。
· 编译器模式(Compiler Mode)
o 单句模式(Statement Mode):在该模式下,编译器对 SQL 文件单条语句作为单元进行编译、提交
o 脚本模式(Script Mode):在该模式下,编译器对整个 SQL 文件作为单元进行编译、提交。 (注:脚本模式有利于编译器和优化器更大程度地优化执行计划,提高整体执行效率,目前处于测试阶段)
· 类型系统
o 旧有类型系统(Legacy TypeSystem):原有 MaxCompute 的类型系统
o MaxCompute 类型系统(MaxCompute TypeSystem):MaxCompute 2.0 引入的新的类型系统
o Hive 类型系统(Hive Compatible TypeSystem):MaxCompute 2.0 引入的 Hive 兼容模式下的类型系统
· 编译器版本
o 默认编译器(Default Version):默认版本的编译器,
o 实验性编译器(Flighting Version):实验性的版本的编译器,包含正在测试中的编译器的新特性
Account 配置选项页
Account 配置选项页面提供添加和管理用户用于访问 MaxCompute 所用账户,参考 用户认证:
Studio 需要通过用户指定的账号访问 MaxCompute 的项目空间和执行提交作业等操作,目前 Studio 支持的账号类型有:
· 阿里云账号(AccessKey)
添加账户
在 Account 配置选项页面,执行以下步骤:
点击按钮 + 或者快捷键 Ctrl-N
选择账户类型 Aliyun Account by AccessKey
在弹出的 Add Account 窗口中填入:
· Account Name: 改账户在 Studio 中的标识名称
· Using properties file: 从配置文件中读取 AccessKey ID 和 AccessKey Secret
o 选择一个在 用户认证 中 conf/odps_config.ini 示例的配置文件
· Using properties: 手工填入 AccessKey ID 和 AccessKey Secret
o Access Id: 填入用户阿里云账号的 AccessKey ID
o Access Key:填入用户阿里云账号的 AccessKey Secret
点击按钮 OK 完成添加。 添加完成后账号会出现在 Account 配置选项页面的 Account 列表里。
删除账户
在 Account 配置选项页面,执行以下步骤(该操作仅在 Studio 配置中删除账户配置,对用户账户本身不产生影响):
在 Account 列表中选择要删除的账户名称
点击按钮 -
在弹出的的确认对话框中,选择 OK
修改账户 AccessKey
在 Account 配置选项页面,执行以下步骤:
在 Account 列表中选择要删除的账户名称
点击”铅笔”图标进行编辑
在弹出的 Edit Account 窗口中编辑 Account 信息,内容与上面的 Add Account 窗口类似