栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive报错Expression Not In Group By Key解决方法

Hive报错Expression Not In Group By Key解决方法

SQL例如以下会报错:

select sum(time) as time, roadCoding, upstreamOrDownstream  
from historicalroaddata where ...

报以下roadcoding、upstreamOrDownstream的错误

FAILED: SemanticException [Error 10025]: Line 1:12 expression not in GROUP BY key ‘roadcoding′

解决方法:使用collect_set()函数包围非group by字段collect_set(roadcoding)[0]

select sum(time) as time,collect_set(roadcoding)[0],  collect_set(upstreamOrDownstream)[0]
from historicalroaddata where...

问题原因:

在group by子句中,select 查询的列,要么需要是 group by中的列,要么得是用聚合函数(比如 sum、count 等)加工过的列。不支持直接引用非 group by的列。这一点和 MySQL 有所区别。

1.Hive不允许直接访问非group by字段;
2.对于非group by字段,可以用Hive的collect_set函数收集这些字段,返回一个数组;
3.使用数字下标,可以直接访问数组中的元素;

MySQL:

select dept.name,count(*) num from empt
join dept on empt.deptno=dept.deptno 
where empt.sal<=51
group by empt.deptno 
order by num desc limit 1

hiveSQL:

select collect_set(dept.dname)[0],count(*) num from empt
join dept on empt.deptno=dept.deptno 
where empt.sal<=51
group by empt.deptno 
order by num desc limit 1
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号