hive执行sql时一般都写在bash脚本里,例如:
1 2 3 4 5 6 |
#!/bin/bash sql="select * from mytable;" echo $sql hive -e $sql |
然而执行的时候,你可能会发现hive莫名其妙的失败了,我们尝试echo $sql的话则会发现输出:
# sh run.sh
select dw hdfs-demo-1.0-SNAPSHOT.jar mr-demo-1.0-SNAPSHOT.jar run.sh spark-demo-1.0-SNAPSHOT.jar spark-sql-demo-1.0-SNAPSHOT.jar from mytable;
原来*被bash替换为了当前目录下的文件,为什么呢?
其实echo $sql相当于:
echo select * from mytable;
此时bash会对*进行解释执行。
如果改成echo “$sql”则相当于:
echo “select * from mytable;”
此时就是普通字符串了。
结论
执行hive -e “$sql”即可。
如果文章帮助了你,请帮我点击1次谷歌广告,或者微信赞助1元钱,感谢!

知识星球有更多干货内容,对我认可欢迎加入:
