Regex 在Hive中使用RLIKE时如何编写模糊多子串匹配
例如:Regex 在Hive中使用RLIKE时如何编写模糊多子串匹配,regex,hive,mapreduce,hiveql,rlike,Regex,Hive,Mapreduce,Hiveql,Rlike,例如: df.select('category').show() +---------------------------+ | category| +---------------------------+ | money,insurance| | life, housework| | game,FPS,network| | game,fight,jump| |
df.select('category').show()
+---------------------------+
| category|
+---------------------------+
| money,insurance|
| life, housework|
| game,FPS,network|
| game,fight,jump|
| hotel|
| trip,hotel|
| null|
我想使用RLIKE
编写一个正则表达式来模糊匹配子字符串列表中的一个子字符串,['money','life']
-- This is an exact match
SELECT *
FROM tb_name
WHERE col_name RLIKE '(money|life)'
-- This is a fuzzy match
SELECT *
FROM tb_name
WHERE col_name RLIKE '*.(money|life)'
但模糊匹配代码段中的ast树中存在错误。06-11 16:59:17-致命过滤器ast树 (TOK_查询(TOK_FROM(TOK_TABREF(TOK_TAB tb_name)))(TOK_插入(TOK_目的地(TOK_目录)”hdfs://XXXX/XX)(TOK_SELECT(TOK_SELEXPR TOK_ALLCOLREF))(TOK_WHERE(RLIKE(TOK_TABLE_或_COL COL_name)*(money | life))(TOK_LIMIT 2000))) 06-11 16:59:17-致命筛选器功能:。TOK|U选项卡\S tdw|U inter|db.*.TOK|(多维数据集汇总) 因此,我看不出模糊匹配的代码片段有任何错误。
有人能帮我吗?
感谢您的支持。
“(?i)money | life”
regexp将匹配包含任何money
、life
、不区分大小写的字符串-(?i)
模糊模板应该做什么RLIKE'money | life'
将匹配包含任何货币的字符串,life@leftjoin我不认为这是内联网平台的实现问题或其他问题。如果我尝试RLIKE'money | life'
或RLIKE'(money | life),它只返回与
money`或life
完全相等的值。看看这个:select'life,house'RLIKE('money | life')
返回TRUE@leftjoin衷心感谢。我确信intranet平台在RLIKE
上存在一些实现问题。