版本信息
- impalad 2.5.0-cdh5.7.*
问题
通过查阅官网可以知道,用户特定变量无法在除impala-shell
外使用,这对使用odbc、jdbc或thrift的客户端来说,SQL维护会造成很大困扰 —— 在长SQL中改变一个或多个条件的值
在impala-shell中,可以通过set
语句或--var
参数设置会话上下文中的变量,如下
使用set
1 | [localhost:21000] > set var:table_name=production_table; |
使用–var
1 | $ impala-shell --var=table_name=staging_table --var=cutoff=2 |
模拟impala-shell:通过程序替换
1 | set var:table_name=production_table; |
有以上sql,
- 通过正则表达式抽出
set语句
- 替换到由
${}
包裹的变量名 - 使用odbc/jdbc/thrift执行替换变量后的sql