开发时假如有如下情景的需求,需要按id分组,但是每个id的经纬度都是一样的,如果HiveQL语句这么写:
SELECT
id,
latitude,
longitude
FROM
t_poi
GROUP BY id ;
则会报错:
FAILED: Error in semantic analysis: Line 2:3 Expression not in GROUP BY key 'latitude'
解决办法:
使用Hive的collect_set ( col )函数,函数功能的更多用法各位可以百度,对于我们这个问题,将HiveQL语句改为如下写法:
SELECT
id,
collect_set(latitude)[0] as latitude,
collect_set(longitude)[0] as longitude
FROM
t_poi
GROUP BY id ;