hive - 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)
从每个桶中找出来吗?
解决方案
正如您已将表分为 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
我想这应该这样做。
推荐阅读
- authentication - 如何使用 Nuxt 身份验证模块设置 $axios 令牌?
- javascript - Promise.all 不是在等待吗?
- version-control - diff 仅检测大小写变化
- node.js - 如何使用 Jest 编写单元测试 Express 控制器?
- django - django + gunicorn:异步工作者的问题(gevent)
- python - 将 Docker 映像部署到云运行时如何解决“容器无法启动错误”
- bash - 在 find 命令中写入所有文件匹配项
- python - 如何将while循环内的if语句分解为两个单独的函数?
- video - 如何使用 FFmpeg 色彩空间选项
- javascript - Fetch API - 状态为 200 的 GET 请求返回空正文