Hive 在正则表达式中使用配置单元变量

Hive 在正则表达式中使用配置单元变量,hive,hiveql,Hive,Hiveql,我想根据蜂巢数据库中的一些关键词提取文本 如果我的脚本看起来像 SELECT text FROM table WHERE text RLIKE '.?(aaa|bbb|ccc).?'; SET hivevar:KeyWords='.?(aaa|bbb|ccc).?'; SELECT text FROM table WHERE text RLIKE ${hivevar:KeyWords}; 但为了使脚本更具可读性,我想在配置单元中将关键字设置为变量。但是如果脚本看起来像 SELECT tex

我想根据蜂巢数据库中的一些关键词提取文本

如果我的脚本看起来像

SELECT text
FROM table
WHERE text RLIKE '.?(aaa|bbb|ccc).?';
SET hivevar:KeyWords='.?(aaa|bbb|ccc).?';

SELECT text
FROM table
WHERE text RLIKE ${hivevar:KeyWords};
但为了使脚本更具可读性,我想在配置单元中将关键字设置为变量。但是如果脚本看起来像

SELECT text
FROM table
WHERE text RLIKE '.?(aaa|bbb|ccc).?';
SET hivevar:KeyWords='.?(aaa|bbb|ccc).?';

SELECT text
FROM table
WHERE text RLIKE ${hivevar:KeyWords};
有什么想法吗?谢谢


Fu

我使用hivevar进行变量替换:

set myVar='.?(aaa|bbb|ccc).?';
select * from <your table> where <your column> RLIKE ${myVar};
set myVar='。?(aaa | bbb | ccc)。”;
从其中选择*像${myVar};

编辑:修正大脑放屁…

仅供参考:
。?(aaa | bbb | ccc)。
实际上与
'aaa | bbb | ccc'
相同。在这种情况下,您将它与
RLIKE
一起使用。请尝试
设置关键字
,然后设置
RLIKE${hiveconf:KeyWords}/code>。你的蜂巢版本是什么?
hivevar
变量可用于0.8.0及更高版本。“脚本失败”?-您的代码没有问题。仍然会得到错误信息,如“FAILED:ParseException line 16:31无法识别靠近“RLIKE”$”(“在表达式规范中”我有两个想法。(1)请共享真实的表名(显然不是
)和列名(可能不是
文本
)(2)检查
set hive.variable.substitute的值