grouping sets_hive执行报错

本文探讨了Hive中GROUP BY与GROUPINGSETS语句的报错案例,指出解析异常源于语法歧义。通过去掉GROUPINGSETS并修复括号使用,解决了问题。还介绍了Hive对group by维度字段的要求,以及相关Bug的官方记录。
摘要由CSDN通过智能技术生成
  • 报错信息:
FAILED: ParseException line 134:22 missing ) at ',' near ')' in subquery source
line 135:12 mismatched input ',' expecting ) near ')' in subquery source
  • 报错case:
SELECT tab1.a,
       tab1.b,
       SUM(tab1.c)
FROM tab1
GROUP BY tab1.a,
         tab1.b
GROUPING SETS ((tab1.a, tab1.b))

报错信息如上;

  • 解决:

        问题定位:去掉grouping sets代码段,正常执行;

        查阅相关资料,错误应该来源于hive自身的bug--解析异常;

        相关链接:[HIVE-6950] Parsing Error in GROUPING SETS - ASF JIRA

SELECT tab1.a,
       tab1.b,
       SUM(tab1.c)
FROM tab1
GROUP BY tab1.a,
         tab1.b
GROUPING SETS ((a, tab1.b))

        执行成功;

  • 原因分析:语法有歧义

grouping sets解析过程中选择将 '((tab1.a, tab1.b))' 解释为'((tab1.a),(tab1.b))',所以报错信息会报')'缺失。

在 '((a, tab1.b))' 的情况下,会正确解析。

  • 2022-11-28追加备注:
  1. 对于hive执行引擎,group  by 后的第一个维度字段必须为主表唯一字段;
  2. group  by后维度字段保证不为null,否则会导致取唯一维度数据时,造成与其他维度数据混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值