首页 > 解决方案 > Hive Bucket 上的最大功能

问题描述

我在 HIVE 中有一个表结构,如下所示 -

create table if not exists cdp_compl_status
(
EmpNo INT,
RoleCapability STRING,
EmpPUCode STRING,
SBUCode STRING,
CertificationCode STRING,
CertificationTitle STRING,
Competency STRING,
Certification_Type STRING,
Certification_Group STRING,
Contact_Based_Program_Y_N STRING,
ExamDate DATE,
Onsite_Offshore STRING,
AttendedStatus STRING,
Marks INT,
Result STRING,
Status STRING,
txtPlanCategory STRING,
SkillID1 INT,
Complexity STRING
)
CLUSTERED BY (Marks) INTO 5 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
TBLPROPERTIES('created on' = '12 Aug');

现在,我想从表中的每个存储桶中查询 MAX(MARKS)。如果我做 -

SELECT MAX(MARKS) from cdp_compl_status;  

它显示了整个表格的最大分数。有什么办法,我可以MAX(MARKS)从每个桶中找出来吗?

标签: hivehiveql

解决方案


正如您已将表分为 5 个存储桶...数据根据 % 函数拆分为存储桶,例如: marks%5==0进入第 1 个存储桶 marks%5==1到第 2 个存储桶 marks%5==2到第 3 个存储桶 marks%5==3到第 4 个存储桶 marks%5==4到第 5 个存储桶

因此,您需要编写 5 个这样的查询: Select max(marks) from cdp_compl_status where marks%5=0;-- for max in first bucket

我想这应该这样做。


推荐阅读