HUE是由Cloudera贡献到apache社区的一款hadoop ui工具,可以实现对hadoop的管理,连接查询系统,例如Hive,Impala等,使用起来非常方便。但是,当我们使用HUE提交SQL的时候,默认是只会执行最后一条SQL的。因此,当我们执行如下的SQL的时候,就会报错:
会提示表不存在(图中的错误是Impala查询系统抛出的日志),因为HUE默认只会执行最后一条SQL。那么,如果我们要执行多条SQL怎么办呢?很简单,只要选中对话框中的所有SQL,然后点击运行就可以顺序执行所有的SQL,如下所示:
我们可以看到,3条SQL都被成功执行了,在“运行”按钮的上方可以看到显示的是3/3,表示执行进度。但是,如果SQL结尾处没有显示地增加分号结尾,那么即使全选之后再执行,HUE也会将三个SQL当成一条SQL来执行,而不是按照换行符进行分割,如下所示:
从图中我们可以看到,最终提交的SQL为:create table student(id int, name string) insert into student values(1001,'Xiaoming') select * from student,因此当我们要批量执行多条SQL的时候,一定要在每条SQL的结尾处加上分号。
值得注意的是,这些批量执行的SQL,都是在同一个session内完成的。也就是说,如果在第一条SQL中设置了session级别的参数,会影响后面执行的SQL。例如,在impala中,我们就可以通过该方法来设置SQL的提交队列:
这里,HUE并没有自动地顺序执行完所有的SQL,而是在第一条执行完成后就停止了。这时候需要我们再次点击运行按钮,才会继续执行下去。参考上面两图中的1/2和2/2就可以看出来。但是设置确实已经生效了,也就是说select 1这条SQL是在impala队列上完成的,这个需要去Impala的管理页面查看,这里就不再赘述了。