我有一个shell脚本,可用来将字符串变量解析为Hive,以便过滤观察结果。我在下面提供了脚本和配置单元代码。
在以下脚本中,我有一个具有字符串值的变量,我尝试将其解析为hive,如下例:
Shell脚本:
name1='"Maria Nash"' *(I use a single quote first and then a double)*
hive --hiveconf name=${name1} -f t2.hql
配置单元代码(t2.hql)
create table db.mytable as
SELECT *
FROM db.employees
WHERE emp_name='${hivevar:name}';
结论
为准确起见,将创建最终表,但不包含任何观察值。雇员表包含的观察值虽然具有emp_name“Maria Nash”。
我认为我可能无法从shell正确解析字符串,或者在应如何处理配置单元查询中的解析变量时,我没有遵循正确的语法。
多谢您的协助!
最佳答案
CLI的使用是deprecated
你可以从shell脚本中使用beeline
它看起来应该像
beeline << EOF
!connect jdbc:hive2://host:port/db username password
select *
from db.employees
where emp_name = "${1}"
EOF
假设$ 1是脚本的输入。
这是如何执行此操作的示例,而不是生产实现。通常,
并且有效的 token 将可用
鉴于您可以单行完成
beeline -u jdbc:hive2://hostname:10000 -f {full Path to Script} --hivevar {variable}={value}
关于bash - 使用Shell解析HIVE中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53082120/