Hive 如何在配置单元中的变量中存储查询的输出
我想将当前_day-1存储在配置单元中的变量中。我知道之前已经有过关于这个主题的讨论,但是这里提供的解决方案首先建议在shell环境中定义配置单元外部的变量,然后在配置单元内部使用该变量 我首先使用Hive 如何在配置单元中的变量中存储查询的输出,hive,hiveql,Hive,Hiveql,我想将当前_day-1存储在配置单元中的变量中。我知道之前已经有过关于这个主题的讨论,但是这里提供的解决方案首先建议在shell环境中定义配置单元外部的变量,然后在配置单元内部使用该变量 我首先使用 select date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),1); 然后我尝试了两种方法: 1. set date1 = ( select date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-M
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}未定义
我是新来的蜂巢,将感谢任何帮助。谢谢。Hive不支持直接将查询结果存储到变量的方法。您必须将shell选项与hiveconf一起使用 然后在脚本中可以引用新创建的变量date1
select '${hiveconf:date1}'
经过大量研究,这可能是实现将变量设置为SQL输出的最佳方法:
INSERT OVERWRITE LOCAL DIRECTORY '<home path>/config/date1'
select CONCAT('set hivevar:date1=',date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),1)) from <some table> limit 1;
source <home path>/config/date1/000000_0;
然后,您将能够在后续SQL中使用${date1}
在这里,我们必须使用限制1,因为如果不指定表名,配置单元在insert OVERRIDE中会出现错误
INSERT OVERWRITE LOCAL DIRECTORY '<home path>/config/date1'
select CONCAT('set hivevar:date1=',date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),1)) from <some table> limit 1;
source <home path>/config/date1/000000_0;