Hadoop 无法使用配置单元聚合函数获取预期的输出

Hadoop 无法使用配置单元聚合函数获取预期的输出,hadoop,hive,hql,Hadoop,Hive,Hql,我已经在蜂巢中创建了一个表,如belowid、name、year、rating、views 圣诞前的噩梦,1993年,3.94568 2,木乃伊,1932,3.54388 《暴风雨的孤儿》,1921年,3.29062 4,《美的对象》,1991年,2.86150 5,夜潮,1963年,2.85126 6,一个神奇的圣诞节,1985年,3.85333 7,穆里尔的婚礼,1994年,3.56323 8,母亲的孩子们,1994年,3.45733 9,Nosferatu:原版,1929,3.55651

我已经在蜂巢中创建了一个表,如belowid、name、year、rating、views

圣诞前的噩梦,1993年,3.94568 2,木乃伊,1932,3.54388 《暴风雨的孤儿》,1921年,3.29062 4,《美的对象》,1991年,2.86150 5,夜潮,1963年,2.85126 6,一个神奇的圣诞节,1985年,3.85333 7,穆里尔的婚礼,1994年,3.56323 8,母亲的孩子们,1994年,3.45733 9,Nosferatu:原版,1929,3.55651 《时代周刊》第10期,1995年,第3.45333页

我想编写一个配置单元查询,以获取具有最高视图的电影的名称

选择名称,maxviews from movies

但这给了我一个错误 失败:语义分析错误:第1:7行表达式不在按键名分组中

但是,按姓名分组会给我一个完整的列表。
我应该对我的查询进行哪些更改?

很可能有一种更简单的方法可以做到这一点

select name 
from(
    select max(views) as views
        , name
        , row_number() over (order by max(views) desc) as row_num 
    from movies  
    group by name
) m
where row_num = 1

经过一点挖掘,我发现答案并不像SQL中那样简单。下面的查询给出了预期的结果


选择a.name,a.views from movies a left semi join选择maxviews from moviesb on a.views=b.views

您需要有一个group by子句group by name为我提供了所有电影名称及其视图,但没有提供具有最大视图的电影。它给出了以下错误失败:解析错误:第5:25行不匹配的输入预期来自FROM子句中的“over”