如何通过Shell脚本向Hive传递包含空格的变量?
如何向Hive脚本传递包含空格的变量?
这个问题我之前也碰到过!本质是shell的参数分割机制在搞鬼:当你直接写-hivevar QUERY=${QUERY}时,shell会把变量里的空格当成参数分隔符,所以Hive只拿到了第一个词select,后面的* from abc;都被当成了独立的、不相关的参数,自然就被忽略了。
解决方法很简单,给传递的变量加上双引号就行,这样shell会把整个字符串当作一个完整的参数传递给Hive:
QUERY="select * from abc;" hive -f hive_script.hql -hivevar QUERY="${QUERY}"
另外顺便提一句,你的Hive脚本里的语法有点小问题,CREATE table AS ${QUERY}缺少了要创建的表名,应该改成类似这样:
CREATE TABLE my_new_table AS ${QUERY};
这样修改后,Hive就能接收到完整的SELECT语句,执行CREATE TABLE操作就不会再出现截断的情况啦。
内容的提问来源于stack exchange,提问作者Djeah
相关产品推荐
相关产品推荐

