Hive中的bigdata计数标记

4sup72z8  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(222)

我在配置单元中有一个名为tags的列,它的数据如下:

tags-column  
c#  
C#,unix  
c++,templates,metaprogramming,debugging,  
c#,delegates,design,events  
unix,templates,events

如何计算每个标签的数量?
对于以上列的结果,我应该

c# 3  
unix 2  
templates 2  
metaprogramming 1  
debugging 1  
delegates 1  
design 1
events 2
pu82cl6c

pu82cl6c1#

您正在查看的功能 LATERAL VIEW 在Hive里。
此功能拆分给定的列,并使用每个标记创建多个行。你需要申请 GROUP BY 子句来获取计数。
示例hql(以下是区分大小写的,即c#与c#不同):

SELECT 
  single_tag,
  count(1) as cnt
FROM 
  tags_table LATERAL VIEW explode(split(tags_column, ',')) tag_table AS single_tag
GROUP BY 
  single_tag
ORDER BY
  cnt;

要使其不区分大小写,可以使用 lower 或者 upper 功能。例如

SELECT 
  lower(single_tag), 
  count(1) as cnt
FROM 
  tags_table LATERAL VIEW explode(split(tags_column, ',')) tag_table AS single_tag
GROUP BY 
  lower(single_tag)
ORDER BY
  cnt;

使用 split 转换 StringArray<String> 现场。

相关问题