Kylin 每日自动构建 Cube
打开Kylin 官网文档
https://kylin.apache.org/cn/docs31/howto/howto_use_restapi.html
点击Query
复制如下语句:
点击 Authentication
将此行命令复制到Linux下:
python -c "import base64; print base64.standard_b64encode('ADMIN:KYLIN')"
复制上面的授权码
修改后得到如下内容:
curl -X POST -H "Authorization: Basic QURNSU46S1lMSU4=" -H "Content-Type: application/json" -d '{ "sql":"select dname,sum(sal) from emp e join dept d on e.deptno = d.deptno group by dname;", "project":"Kylin_Prooject" }' http://hadoop102:7070/kylin/api/query
运行之后得到如下图:
将内容json格式化校验,返回的结果如下:
点击Build Cube
复制如下内容:
curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{"startTime":'1423526400000', "endTime":'1423612800000', "buildType":"BUILD"}' http://hadoop102:7070/kylin/api/cubes/Kylin_Cube_Test/build
Kylin 提供了 Restful API,因次我们可以将构建 cube 的命令写到脚本中,将脚本交给azkaban 或者 oozie 这样的调度工具,以实现定时调度的功能。
kylin_cube_build.sh 脚本如下:
#!/bin/bash
#从第 1 个参数获取 cube_name
cube_name=$1 #从第 2 个参数获取构建 cube 时间
if [ -n "$2" ]
then
do_date=$2
else
do_date=`date -d '-1 day' +%F`
fi
#获取执行时间的 00:00:00 时间戳(0 时区)
start_date_unix=`date -d "$do_date 08:00:00" +%s`
#秒级时间戳变毫秒级
start_date=$(($start_date_unix*1000))
#获取执行时间的 24:00 的时间戳
stop_date=$(($start_date+86400000))
注:我们没有修改 kylin 的时区,因此 kylin 内部只识别 0 时区的时间,0 时区的 0 点是东 8 区的早上 8 点,因此我们在脚本里要写$do_date 08:00:00 来弥补时差问题。