如何计算我的数据在 Hive 中某些特定单词的出现频率



我的蜂巢中有一个 twitter 对象表(json 格式(、n 行和 1 列。任务是计算一些单词如"hon"、"han"在不同对象中的出现频率(每个对象都有一个叫做"text"的属性,其中包括一些texts(字符串类型((,这意味着即使一个单词在一个对象中出现不止一次,但它只计算一个。我写了一个如下所示的查询。

select count(*) from table_name
where regexp(get_json_object(col_name, '$.text'), 'han')
limit 10

并收到类似

失败:ParseException 行 2:6 无法识别表达式规范中"正则表达式"("get_json_object"附近的输入

如何执行此查询任务?而且我不知道如何在正则表达式中忽略大小写。

使用(?i)修饰符进行不区分大小写的比较:

select 
      sum(case when text rlike '(?i)han' then 1 else 0 end) cnt_han,
      sum(case when text rlike '(?i)hon' then 1 else 0 end) cnt_hon
  from
(
select get_json_object(col_name, '$.text') as text 
  from table_name
)s;

最新更新