在配置单元中使用配置单元变量传递值

6jjcrrmo  于 2021-06-29  发布在  Hive
关注(0)|答案(2)|浏览(335)

我有一个像 "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}'

但配置单元返回以下错误消息:
使用中的配置初始化日志记录jar:file:/opt/mapr/hive/hive-0.13/lib/hive-common-0.13.0-mapr-1409.jar/hive-log4j.属性 FAILED: parseexception行1:49在'is'附近'this'缺少eof g4t7491_[mgr@g4t7491 ~]$
有人知道如何正常通过考试吗?

6qfn3psc

6qfn3psc1#

“配置单元变量的工作方式与hiveconf不同,您需要在其中应用”hiveconf:somthing“在声明hivevar的代码中,只需像这样添加var名称->${var\u 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};
ca1c2owp

ca1c2owp2#

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

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

相关问题