我最近在使用 Hive 2.3.9 版本时遇到了一个问题。
当我的分组依据设置为“a,b,c”并且分组集设置为(a,b,(a,b))时。
在上一个 Hive 版本中,grouping__id 的结果是当 "a" 时为 1 当 "b" 时为 2 当 "a,b" 时为 3。但是在 2.3.9 版本中,我发现结果是当 "a" 时为 1 当 "b" 时为 2 当 "a, b" 时为 0。新的正则与 Spark grouping__id Regular 相同。
我记得Hive Grouping__id的规则是从低到高,默认都是0,当出现维度时就重置为1,最后进行小数化。
但现在看上去好像已经改变了。
那么 Hive 做出了一些改变吗?
正如我在评论中提到的,这是因为要使其行为与其他查询引擎(如 apache spark)保持一致。
在旧版本的 Hive 中:
Hive 2.3.9 中的行为:
例子:
让我们尝试如下:
旧行为(从高到低位顺序)
(a)
0 1 1
3
(b)
1 0 1
5
(a, b)
0 0 1
1
新行为(从低到高位顺序)
(a)
1 1 0
6
(b)
1 0 1
5
(a, b)
1 0 0
4
参考:
有没有解决方法可以达到旧结果?如果您有兴趣了解,请告诉我。我会更新答案。