bash - 使用Shell解析HIVE中的字符串

标签 bash shell hadoop hive

我有一个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是脚本的输入。

这是如何执行此操作的示例,而不是生产实现。通常,
  • Kerberos将被启用,因此用户名和密码将不存在
    并且有效的 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/

    相关文章:

    bash - 前缀变量赋值不适用于 echo

    python - 使用 AppleScript 的输出作为 Automator 中 Shell 脚本的输入

    linux - 将 $PATH 设置为 $HOME 的所有可能路径

    list - 如何防止所有管道重定向附加到文件

    variables - 通过参数初始化Hadoop中的公共(public)静态变量

    hadoop - 无法在指定位置的配置单元中查看创建的数据库

    bash - 在 bash 中获取具有变量名的数组的键

    linux - 如何在没有sudo的情况下在shell脚本中运行特定命令?

    linux - bash 中的 "sed"命令

    hadoop - 在 continuent-tools-hadoop 中更改 tungsten 安装目录