hive-regexp\u替换多个字符串的函数

s3fp2yjn  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(551)

我用的是Hive0.13!我想在我的数据中找到多个像“hip hop”和“rock music”这样的代币,并用“hip hop”和“rockmusic”替换它们——基本上不用空格就可以替换它们。我在hive中使用了regexp\u replace函数。下面是我的查询,它适用于以上两个例子。

drop table vp_hiphop;
create table vp_hiphop as
select userid, ntext,
       regexp_replace(regexp_replace(ntext, 'hip hop', 'hiphop'), 'rock music', 'rockmusic') as ntext1
from  vp_nlp_protext_males
;

但是我有100个这样的bigram/ngram,我希望能够在删除空白的地方高效地进行替换。我可以匹配短语-嘻哈和摇滚乐,但在取而代之的是我想简单地修剪空白。下面是我试过的。我也尝试过使用trim和regexp\u replace,但是它需要regexp\u replace函数中的第三个参数。

drop table vp_hiphop;
create table vp_hiphop as
select  userid, ntext,
        regexp_replace(ntext, '(hip hop)|(rock music)') as ntext1
from  vp_nlp_protext_males
;
kyvafyod

kyvafyod1#

可以使用 TRANSLATE 函数将子字符串替换为空字符串。对于您的查询,它将变成:

drop table vp_hiphop;
create table vp_hiphop as
select  userid, ntext,
        translate(ntext, ' ', '') as ntext1
from  vp_nlp_protext_males
;

相关问题