在离线数仓中每天都会调度使用脚本,但绝大多数任务都是通过调度框架直接来调度使用的,现在写一个跑hive脚本的beeline的同步脚本,和对于kerberos认证的免密认证,确保调度能执行成功,脚本如下:
#!/bin/bash
kinit -kt /root/admin.keytab ?/?
start="beeline "
stg="--hivevar stg=stg "
ods="--hivevar ads_db=ods "
ads="--hivevar ads_db=ads "
dwd="--hivevar dwd_db=dwd "
dw="--hivevar dw_db=dw "
dws="--hivevar dws_db=dws "
test="--hivevar test=test "
dt1=($(date +"%Y-%m-%d" -d "-1day"))
dt2=($(date +"%Y-%m-%d" -d "-0day"))
mon1=($(date -d "-1month" +%Y-%m))
mon2=($(date -d "${dt2}" +%Y-%m))
start_dt="--hivevar start_dt=${dt1} "
end_dt="--hivevar end_dt=${dt2} "
last_mon="--hivevar last_mon=${mon1} "
cur_mon="--hivevar cur_mon=${mon2} "
end="-u 'jdbc:hive2://cdh1:10000/;principal=hive/cdh1领域名' --silent=true --outputformat=tsv2 --showHeader=false -f"
m=${start}${stg}${ods}${dwd}${dw}${dws}${test}${start_dt}${end_dt}${last_mon}${cur_mon}${end}
echo "初始化配置${m}开始执行SQL文件"
${m} $1
echo "执行SQL文件完毕"
其中中间那些参数是进行跑SQL文件的动态参数,之所以这样设置是离线数仓的时间和月份都是变化的,还有就是其中对应的数据库名也有很多,这样就能实现动态的同步执行,后面的$1就是SQL文件路径了,通过调度框架只要这样配置路径就能跑,--silent=true --outputformat=tsv2 --showHeader=false这个命令是将其中的beeline的日志减少,使调度日志更加简洁,其中kinit -kt /root/admin.keytab ?/?是进行kerberos认证的文件的形式,有2种,但如果是使用脚本的方式就一定要用这个认证,这样可以减少输入密码这一步,以上就是离线数仓进行调度脚本的deeline执行任务