hive脚本的三种执行方式
1. hive控制台交互式
执行;
2. hive -e "SQL"
执行;或者 hive -S -e " sql" ,加了-S表示静音模式,即不会显示mapreduce的操作过程。
这种方式直接在bash shell终端里边输入 hive -e "SQL"执行即可,不需要进入hive交互式界面,并且hql语句可以用单引号或者双引号括起来都行,语句末尾可以没有;号,但是我的hive1.2.2版本要求引号里边的hql必须在from的表名称前加上所在数据库前缀,否则抛出SemanticException [Error 10001]: Line 1:22 Table not found 'table_name'错误。
此处还有一亮点,利用输出定向将查询结果导出到linux本地目录下。例如:
[root@cloud4 shell]$ hive -e 'select * from t1' > test.txt
3. hive [-S]-f SQL文件
执行;
不进入交互模式,执行sql文件中的sql脚本,可以和静音模式-S联合使用,通过第三方程序调用,第三方程序通过hive的标准输出获取结果集,使用场景是自动化报表等。
例如:
$HIVE_HOME/bin/ hive -S -f /home/my/hive-script.sql (不会显示mapreduct的操作过程).
那么问题来了