1. 程式人生 > >Impala實踐之八:指令碼中引號問題

Impala實踐之八:指令碼中引號問題

前言

寫指令碼,遇到一個小坑,python和seven幫忙填了一下,突然想起來之前貌似遇到過類似的情況。

版本一

指令碼:

sql=$1
coordinator=$2
output_file=$3

echo $sql
echo "------"
echo $output_file
echo "------"
echo $coordinator

impala-shell -i $coordinator -q $sql -o $output_file

執行命令:

bash impala-exec.sh "select distinct dt from table" ip:21000 /tmp/test.txt

結果:

$ bash impala-exec.sh "select distinct dt from tablename" "ip1:21000" "tmp/test.txt"

select distinct dt from tablename
------
tmp/test.txt
------
ip1:21000

Error, could not parse arguments "distinct dt from tablename"
Usage: impala_shell.py [options]

Options:
  -h, --help            show this help message and exit
-i IMPALAD, --impalad=IMPALAD <host:port> of impalad to connect to [default: hadoop-cluster-8-228:21000] ......

可以看到,指令碼獲取到了,但是impala-shell識別不了。

版本二

仔細想了一下,應該是impala在解析sql語句時候的語法規範問題,修改一下指令碼。

改成如下即可。

impala-shell -i $coordinator
-q "$sql" -o $output_file

2016-04-11 19:08:00 hzct