版权声明:本文为博主原创文章,未经博主允许不得转载。 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