shell脚本调度impala脚本总结
背景:由于公司使用oozie调度工作流但是其不支持impala只能转shell间接调度
首先说下impala的交互方式:
- 使用客户端直接进入impala然后进行sql操作,配好环境后impala-shll即可
- 使用hue
- impala-shell -q ‘select。。。’ -i localhost(地址)
- 若sql比较多可以写成文件后缀名无所谓impala-shell -f filename -i localhost即可
用shell脚本来执行impala:
在shell脚本中直接写impala-shell -q ‘select。。。’ -i localhost即可
问题:上述都好解决问题是脚本中需要变量怎么弄?
impala的这些资料明显没有hive的多,找了好久才找到解决方法,特此记录。
举例:
- 正常切库:use test;
- hive中使用变量切库:use ${db_name};
- impala中使用变量切库(注意是脚本中的变量)use ${var:db_name};
use ${var:db_name};
使用方式:${var:var_name}不能直接像hive中引用变量名
impala在shell中传参方式:
#!/bin/bash
file=$1
db_name=$2
create_date=$3
impala-shell --var=db_name=${db_name} --var=create_date=${create_date} -f $1 -i test-cdh2
格式比较奇怪:--var=var_name=var_value
在脚本中不要出现${var_name}类似的东西即使注释掉也会报错
题外:关于oozie对与shell脚本的调度配置:
在制定shell文件时不光要制定还要添加file,将执行的shell和shell调度的sql文件都添加这样就不会报错文件找不到了