需求:公司数仓中的一个项目需要每天定时执行集群中的sql脚本文件,我们需要将它写好成脚本上打包成zip文件传到azkaban中定时执行
我需要把这个项目中的(三个分层)所有loaddata部分对应的sql文件名称写成job文件去定时执行,因为每天基本上是定时跑这三层的几个文件
第一步,编写job脚本
#before job build project
type=command
command=su hdfs -c "/data/apps/warehouse-schema/build.sh"
retries=10 ##失败的job的自动重试的次数
retry.backoff=120000 ##重试的间隔(毫秒)
注意各个文件之间的依赖关系,这步是最重要的,因为各个脚本文件之间的执行有先后顺序,我们需要厘清楚这里面的关系,注意他们彼此之间的依赖。
注意dependicies里面填写的是job文件名,不是.sql文件名。比如a.job文件依赖b.job文件里面的c.sql,a文件的dependicies里写的是b.job而不是c.sql
type=command
dependencies=dwd_tj_farm_inventory
command=su hdfs -c 'hive -f /data/apps/warehouse-schema/tianjin_ods/loaddata/dws/dws_tj_farm_inventory.sql'
第二部,上传压缩文件
将各个jobs文件打包成.zip压缩包上传,会根据依赖关系生成Execution Flow
第三步,执行
点击execute,执行即可按照图的顺序往下依次执行
左侧的schedule按钮,点击设置定时调度的时间