gpt4 book ai didi

hive - 如何在 HIVE 脚本中设置变量

转载 作者:行者123 更新时间:2023-12-03 04:54:12 25 4
gpt4 key购买 nike

我正在寻找 Hive QL 中 SET varname = value 的 SQL 等效项

我知道我可以做这样的事情:

SET CURRENT_DATE = '2012-09-16';
SELECT * FROM foo WHERE day >= @CURRENT_DATE

但是我收到了这个错误:

character '@' not supported here

最佳答案

您需要使用特殊的hiveconf进行变量替换。例如

hive> set CURRENT_DATE='2012-09-16';
hive> select * from foo where day >= ${hiveconf:CURRENT_DATE}

同样,您可以传递命令行:

% hive -hiveconf CURRENT_DATE='2012-09-16' -f test.hql

请注意,还有env系统变量,因此您可以引用${env:USER}为例。

要查看所有可用变量,请从命令行运行

% hive -e 'set;'

或者从 hive 提示符中运行

hive> set;

更新:我也开始使用 hivevar 变量,将它们放入我可以使用 source 命令从 hive CLI 包含的 hql 片段中(或从命令行作为 -i 选项传递) )。这里的好处是,该变量可以在有或没有 hivevar 前缀的情况下使用,并允许类似于全局与本地使用的东西。

因此,假设有一些设置表名变量的setup.hql:

set hivevar:tablename=mytable;

然后,我可以带入配置单元:

hive> source /path/to/setup.hql;

并在查询中使用:

hive> select * from ${tablename}

hive> select * from ${hivevar:tablename}

我还可以设置一个“本地”表名,这会影响 ${tablename} 的使用,但不会影响 ${hivevar:tablename}

hive> set tablename=newtable;
hive> select * from ${tablename} -- uses 'newtable'

对比

hive> select * from ${hivevar:tablename} -- still uses the original 'mytable'

对于 CLI 来说可能没有太多意义,但可以在使用 source 的文件中包含 hql,但设置一些“本地”变量以在脚本的其余部分中使用。

关于hive - 如何在 HIVE 脚本中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com