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

Json 如何计算我的数据中某些特定单词在hive中出现的频率?,json,hive,mapreduce,Json,Hive,Mapreduce,我的配置单元中有一个twitter对象表(json格式)、n行和1列。任务是统计不同对象中某些单词(如“hon”、“han”)的出现频率(每个对象都有一个名为“text”的属性,其中包括一些文本(字符串类型)),这意味着即使一个单词在一个对象中出现了多次,但只统计一次。 我写了一个如下的查询 select count(*) from table_name where regexp(get_json_object(col_name, '$.text'), 'han') limit 10 并得到一

我的配置单元中有一个twitter对象表(json格式)、n行和1列。任务是统计不同对象中某些单词(如“hon”、“han”)的出现频率(每个对象都有一个名为“text”的属性,其中包括一些文本(字符串类型)),这意味着即使一个单词在一个对象中出现了多次,但只统计一次。 我写了一个如下的查询

select count(*) from table_name
where regexp(get_json_object(col_name, '$.text'), 'han')
limit 10
并得到一条错误消息,如

失败:ParseException行2:6无法识别“regexp”(表达式规范中的“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;
使用
(?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;

您好,感谢您的回复。我尝试了您的代码,但出现以下错误。失败:ParseException行2:9无法识别“sum”附近的输入(“”when'在表达式规范中。我的配置单元版本为2.3。4@SeekerBlood修复了语法错误:应该是CASE语句谢谢mate!它可以工作,并且得到与我的java代码相同的结果!顺便问一下,在“;”@SeekerBlood之前的“s”到底是什么意思?它是一个子查询名(别名).Hive子查询应该有一些别名。您好,感谢您的回复。我尝试了您的代码,但出现以下错误。失败:ParseException行2:9无法识别“sum”附近的输入(“”when'在表达式规范中。我的配置单元版本为2.3。4@SeekerBlood修复了语法错误:应该是CASE语句谢谢mate!它可以工作,并且得到与我的java代码相同的结果!顺便问一下,在“;”@SeekerBlood之前的“s”到底是什么意思?它是一个子查询名(别名).Hive子查询应该有一些别名。