MaxCompute支持您通过Azkaban实现作业调度,帮助您高效地完成高频数据分析工作。本文以通过MaxCompute客户端执行命令(Command)的方式为例为您介绍如何使用Azkaban调度SQL作业。

背景信息

Azkaban是一套作业调度系统,可以调度Command、Hadoop MapReduce、Hive、Spark、Pig等类型作业,而且支持自定义Plugin,其中最简单而且最常用的是Command类型。更多Azkaban信息,请参见Azkaban

您需要将待调度作业依赖的源数据、建表及导入数据脚本、查询数据脚本等以文件形式压缩后上传至Azkaban才可进一步实现调度操作。

本文中假设您需要在Azkaban上通过调度功能实现创建表、导入数据、查询数据这一套SQL处理逻辑。基于此场景,您可以设计作业、作业调度流程、各作业对应的作业文件及脚本文件如下。

调度流程及相关文件

前提条件

在执行操作前,请确认您已满足如下条件:

操作流程

  1. 步骤一:准备作业相关文件并压缩为ZIP包
    准备好调度作业依赖的源数据、脚本文件并压缩为ZIP包。
  2. 步骤二:将ZIP压缩包上传至Azkaban
    通过Azkaban项目上传压缩包文件,导入作业调度流程。
  3. 步骤三:运行Flow View
    运行导入的作业调度流程。
  4. 步骤四:查看Flow View运行结果
    查看作业调度流程运行结果。

步骤一:准备作业相关文件并压缩为ZIP包

  1. 准备作业相关数据、脚本文件并保存。
    基于上文的假设场景,您需要准备的文件如下:
    • 源数据。保存为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作为示例。

  2. 将上述文件整体压缩为ZIP包。
    例如压缩为demo1.zip,压缩包内的文件列表如下图所示。压缩方式

步骤二:将ZIP压缩包上传至Azkaban

  1. 登录Azkaban。
    更多登录操作,请参见登录Azkaban
  2. 创建Azkaban项目。
    更多创建Azkaban项目操作,请参见Create Projects
  3. 在新创建的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

步骤四:查看Flow View运行结果

运行结束后,您可以在Execution界面的Job List页签查看各个作业的运行结果,还可以单击作业右侧的Details查看详细运行信息。

更多查看作业运行结果操作,请参见Execution

查看运行结果