在HIVE中使用hivevar传递值

时间:2016-05-17 08:15:39

标签: hive

我有一个类似"This is a param"的参数,我将把它传递到hiveQL下面:

hive -hivevar sys_nm="This is a param" -e 'select * from rd_sys where rd_sys_nm=${hivevar:sys_nm}'

但Hive返回以下错误消息:

  

使用jar中的配置初始化日志:file:/opt/mapr/hive/hive-0.13/lib/hive-common-0.13.0-mapr-1409.jar!/hive-log4j.properties   FAILED: ParseException行1:49缺少EOF,'是'靠近'这个'   g4t7491_ [mgr @ g4t7491~] $

有谁知道如何正常传递它?

2 个答案:

答案 0 :(得分:0)

Hive var不像hiveconf那样需要在代码中应用“hiveconf:somthing” 当声明hivevar时,只需添加这样的var名称 - > $ {VAR_NAME}

例如: 通过命令行:

hive -hivevar MONTH_VAR='11' -e "select * from table where month=${MONTH_VAR};"

你也可以通过脚本声明:

set hivevar:MONTH_VAR=11;

- 所以查询看起来像这样(没有hiveconf):

set hivevar:MONTH_VAR=11;
SELECT * from table where month=${MONTH_VAR};

答案 1 :(得分:0)

你需要将字符串放在单引号中,以便在插值后正确解析为sql内的字符串。

$("#sortable")