MaxCompute支持您通过Azkaban实现作业调度,帮助您高效地完成高频数据分析工作。本文以通过MaxCompute客户端执行命令(Command)的方式为例为您介绍如何使用Azkaban调度SQL作业。
背景信息
Azkaban是一套作业调度系统,可以调度Command、Hadoop MapReduce、Hive、Spark、Pig等类型作业,而且支持自定义Plugin,其中最简单而且最常用的是Command类型。更多Azkaban信息,请参见Azkaban。
您需要将待调度作业依赖的源数据、建表及导入数据脚本、查询数据脚本等以文件形式压缩后上传至Azkaban才可进一步实现调度操作。
本文中假设您需要在Azkaban上通过调度功能实现创建表、导入数据、查询数据这一套SQL处理逻辑。基于此场景,您可以设计作业、作业调度流程、各作业对应的作业文件及脚本文件如下。
前提条件
在执行操作前,请确认您已满足如下条件:
- 已下载并安装MaxCompute客户端。
更多安装并配置MaxCompute客户端操作,请参见安装并配置MaxCompute客户端。
- 已下载并安装Azkaban。
更多下载并安装Azkaban操作,请参见安装Azkaban。
操作流程
- 步骤一:准备作业相关文件并压缩为ZIP包准备好调度作业依赖的源数据、脚本文件并压缩为ZIP包。
- 步骤二:将ZIP压缩包上传至Azkaban通过Azkaban项目上传压缩包文件,导入作业调度流程。
- 步骤三:运行Flow View运行导入的作业调度流程。
- 步骤四:查看Flow View运行结果查看作业调度流程运行结果。
步骤一:准备作业相关文件并压缩为ZIP包
- 准备作业相关数据、脚本文件并保存。基于上文的假设场景,您需要准备的文件如下:
- 源数据。保存为TXT文件。例如emp.txt,包含的数据如下:
7369,SMITH,CLERK,7902,1980-12-17 00:00:00,800,,20 7499,ALLEN,SALESMAN,7698,1981-02-20 00:00:00,1600,300,30 7521,WARD,SALESMAN,7698,1981-02-22 00:00:00,1250,500,30 7566,JONES,MANAGER,7839,1981-04-02 00:00:00,2975,,20 7654,MARTIN,SALESMAN,7698,1981-09-28 00:00:00,1250,1400,30 7698,BLAKE,MANAGER,7839,1981-05-01 00:00:00,2850,,30 7782,CLARK,MANAGER,7839,1981-06-09 00:00:00,2450,,10 7788,SCOTT,ANALYST,7566,1987-04-19 00:00:00,3000,,20 7839,KING,PRESIDENT,,1981-11-17 00:00:00,5000,,10 7844,TURNER,SALESMAN,7698,1981-09-08 00:00:00,1500,0,30 7876,ADAMS,CLERK,7788,1987-05-23 00:00:00,1100,,20 7900,JAMES,CLERK,7698,1981-12-03 00:00:00,950,,30 7902,FORD,ANALYST,7566,1981-12-03 00:00:00,3000,,20 7934,MILLER,CLERK,7782,1982-01-23 00:00:00,1300,,10 7948,JACCKA,CLERK,7782,1981-04-12 00:00:00,5000,,10 7956,WELAN,CLERK,7649,1982-07-20 00:00:00,2450,,10 7956,TEBAGE,CLERK,7748,1982-12-30 00:00:00,1300,,10
- 建表并上传数据脚本。保存为.sql文件。例如upload.sql,脚本内容如下:
drop table if exists azkaban_emp; create table azkaban_emp (empno bigint, ename string, job string, mgr bigint, hiredate datetime, sal bigint, comm bigint, deptno bigint) lifecycle 1; tunnel upload emp.txt azkaban_emp;
- 查询数据脚本。保存为.sql文件。例如cat_data.sql,脚本内容如下:
select * from azkaban_emp;
- 启动作业。保存为.job文件。例如start.job,脚本内容如下:
#start type=command command=echo 'job start'
- 上传数据作业。保存为.job文件。例如upload_data.job,脚本内容如下:
#upload_data type=command dependencies=start command=D:/odpscmd_public/bin/odpscmd.bat -f 'upload.sql'
command
为MaxCompute客户端的本地安装路径。此处以D:/odpscmd_public/bin/odpscmd.bat
作为示例。 - 查询数据作业。保存为.job文件。例如mc.job,脚本内容如下:
#mc.job type=command command=D:/odpscmd_public//bin/odpscmd -f 'cat_data.sql' dependencies=upload_data
command
为MaxCompute客户端的本地安装路径。此处以D:/odpscmd_public/bin/odpscmd.bat
作为示例。
- 源数据。保存为TXT文件。例如emp.txt,包含的数据如下:
- 将上述文件整体压缩为ZIP包。例如压缩为demo1.zip,压缩包内的文件列表如下图所示。
步骤二:将ZIP压缩包上传至Azkaban
- 登录Azkaban。更多登录操作,请参见登录Azkaban。
- 创建Azkaban项目。更多创建Azkaban项目操作,请参见Create Projects。
- 在新创建的Azkaban项目中上传步骤一中生成的压缩包。更多上传压缩包操作,请参见Upload Projects。
压缩包上传成功后,即可在Graph页签查看到导入后的调度流程Flow View。更多查看Flow View操作,请参见Flow View。
步骤三:运行Flow View
导入调度流程后,您可以在界面右上角单击Schedule/Execute Flow进入运行调度作业对话框,在Flow View页签,您可以单击右下角的Execute启动作业调度。
更多运行Flow View操作,请参见Executing Flow View。
步骤四:查看Flow View运行结果
运行结束后,您可以在Execution界面的Job List页签查看各个作业的运行结果,还可以单击作业右侧的Details查看详细运行信息。
更多查看作业运行结果操作,请参见Execution。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/157854.html