line 7:31 extraneous input ')' expecting EOF near '<EOF>'
sql为:
SELECT tab1.a,
tab1.b,
SUM(tab1.c)
FROM tab1
GROUP BY tab1.a,
tab1.b
GROUPING SETS ((tab1.a, tab1.b))
从网上找了下原因,说是HIve自身的bug,可以改成如下即可运行:
SELECT tab1.a,
tab1.b,
SUM(tab1.c)
FROM tab1
GROUP BY tab1.a,
tab1.b
GROUPING SETS ((a, tab1.b))。
也就是在 grouping sets 后面每一种组合里,如果组合在2个以上,就不能把x.column1 放第一个位置,应该改为 column1。
例如:
表tab1 有a,b,c 三列
表tab2 有a,d两列
就不能写成如下形式
SELECT tab1.a,b, d
SUM(tab1.c)
FROM tab1 join tab2 on tab1.a = tab2.b
GROUP BY tab1.a,b, d
GROUPING SETS ((tab1.a, b, d))
应该改为:
SELECT tab1.a,
b, d
SUM(tab1.c)
FROM tab1 join tab2 on tab1.a = tab2.b
GROUP BY tab1.a,b, d
GROUPING SETS ((b, tab1.a, d))
即不能使tab1.a 放在第一位置,但如果只有tab1.a的话是可以的
如下是正确的
SELECT tab1.a,
b, d
SUM(tab1.c)
FROM tab1 join tab2 on tab1.a = tab2.b
GROUP BY tab1.a,b, d
GROUPING SETS ((tab1.a))
参考链接:https://issues.apache.org/jira/browse/HIVE-6950