Hive通过-f调用sql文件并进行传参

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdkyxy2013/article/details/86238689

       有时候我们需要从Hive中获取需要的数据进行代码的编写,这就需要我们将查询到的语句输出到文档中,我们可以使用-e这个参数,例如:

hive -e 'select * from area where code=202020' >> /root/files/a.csv

       但是有时候sql语句会异常复杂或者语句较多,这个时候我们可以使用-f参数,将所有的sql语句写到一个文件中,然后Hive调用这个文件。例如:将sql语句存放到a.sql中,然后执行如下的命令

hive -f ./a.sql >> /root/files/a.csv

        不仅如此,在Hive 1.0之后,Hive还支持了参数传递,例如上例中的code参数,如果我们要实现参数传递,可以使用如下的方法:

        a.sql中的sql语句修改为:

select * from area where code='${hiveconf:code}';
或
select * from area where code='${hivevar:code}';

       Hive执行命令如下:

hive -hiveconf code=370202 -f a.sql >> /root/files/a.csv
或
hive -hivevar code=370202 -f a.sql >> /root/files/a.csv

注意:Hive支持多参数的传递!如果涉及多个参数,可以使用如下形式:

hive -hiveconf 参数1=参数值1 -hiveconf 参数2=参数值2... -f a.sql >> /root/files/a.csv
或
hive -hivevar 参数1=参数值1 -hivevar 参数2=参数值2... -f a.sql >> /root/files/a.csv

猜你喜欢

转载自blog.csdn.net/gdkyxy2013/article/details/86238689