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的值