1. 程式人生 > >shell指令碼排程impala指令碼總結

shell指令碼排程impala指令碼總結

背景:由於公司使用oozie排程工作流但是其不支援impala只能轉shell間接排程

首先說下impala的互動方式:

  1. 使用客戶端直接進入impala然後進行sql操作,配好環境後impala-shll即可
  2. 使用hue
  3. impala-shell -q ‘select。。。’ -i localhost(地址)
  4. 若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檔案都新增這樣就不會報錯檔案找不到了

oozie配置截圖