配置单元查询中的配置单元参数

bvn4nwqk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(380)

我有两个密码。
其中一个名为testing.hql

select dt, '${hiveconf:var}' from temp_table;

另一个名为testing.sh

temp= date --date='yesterday' +%y%m%d
hive -f testing.hql -hiveconf var=$temp

所以我基本上是想把日期值传递给查询,这样我就可以根据当前日期过滤查询中处理的数据。
我用这个命令运行这个。容易的。

./testing.sh

这不管用,有人能快速检查一下我犯了什么错误吗?
所以基本上我想做的是

select jobid from temp_table where dt >= '${hiveconf:var}';

所以我得到的jobid仅仅是昨天完成的,因为shell脚本将parameter设置为昨天的日期。
谢谢!
当前输出dt值后的空白。

7xzttuei

7xzttuei1#

temp变量应声明如下:,

temp=$(date --date='yesterday' +%y%m%d)
5ssjco0h

5ssjco0h2#

temp=removing后面有一个空格,可能可以解决问题

temp=<blank>date ...
ddhy6vgd

ddhy6vgd3#

我想出来了。
2个简单的错误。
1) 在执行shell脚本时,执行行必须用` Package 。所以我做了

temp=`date --date='yesterday' +%y%m%d`
    hive -f testing.hql -hiveconf var=$temp

它就像一个符咒
2) 在查询中,参数必须用双引号括起来。

select jobid from temp_table where dt >= "${hiveconf:var}";

希望这个问题能对其他有这个问题的人有所帮助。

lf3rwulv

lf3rwulv4#

你可以用甜菜粉剂。它允许将结果(或部分结果)存储在变量中,并在以后的代码中使用此变量。
beetamer是hive或impala的宏扩展,允许扩展apachehive和cloudera impala引擎的功能。

select avg(a) from abc;
%capture MY_AVERAGE;
select * from abc2 where avg_var=#MY_AVERAGE#;

在这里,您将查询得到的平均值保存到宏变量myu average中,然后在第二个查询中重用它。

相关问题