如何将查询的输出存储在配置单元的变量中 [英] How to store the output of a query in a variable in HIVE

查看:62
本文介绍了如何将查询的输出存储在配置单元的变量中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将CURRENT_DAY-1存储在Hive中的一个变量中。我知道已经有关于此主题的以前的帖子,但那里提供的解决方案首先建议在外壳环境中的配置单元外部定义变量,然后在配置单元内部使用该变量。

Storing result of query in hive variable

我首先使用

获取了Current_Date
 select date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),1);

然后我尝试了两种方法:

1. set date1 = ( select date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),1);

and 

2. set hivevar:date1 = ( select date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),1);

这两种方法都引发错误:

"ParseException line 1:82 cannot recognize input near 'select' 'date_sub' '(' in expression specification"

当我打印(1)代替昨天的日期时,SELECT查询保存在变量中。(2)方法引发"{hivevar:dt_chk}未定义 "。

我是蜂巢新手,非常感谢您的帮助。谢谢。

推荐答案

配置单元不支持将查询结果存储到变量的直接方法。您必须将外壳选项与hiveconf一起使用。

date1 = $(hive -e "set hive.cli.print.header=false; select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);")
hive -hiveconf "date1"="$date1" -f hive_script.hql

然后您可以在脚本中引用新创建的可变日期1

select '${hiveconf:date1}'

这篇关于如何将查询的输出存储在配置单元的变量中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆