shell指令碼排程impala指令碼總結
阿新 • • 發佈:2018-11-09
背景:由於公司使用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檔案都新增這樣就不會報錯檔案找不到了