分组集大小不能大于64:hive

m4pnthwp  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(1056)

我的配置单元表中有70列,我想获取所有的行,这些行正好有70个匹配的列。如果两行在所有列中包含相同的数据,那么我需要找到该行并将其计为“2”。我写在下面。

SELECT (all 70 columns),COUNT(*) AS CountOf FROM tablename GROUP BY (all 70 columns) 
    HAVING  COUNT(*)>1;

但它的表现

Error: Error while compiling statement: FAILED: SemanticException [Error 10411]: 
    Grouping sets size cannot be 
    greater than 64 (state=42000,code=10411)

有没有办法从配置单元表中找到精确的重复行数?

wlwcrazw

wlwcrazw1#

这是一个虫子Hive-21135在Hive里 3.1.0 版本,固定在Hive中 4.0.0 ,见hive-21018,非后端口。
尝试在聚合之前在子查询中使用分隔符连接列作为一种解决方法,我不确定它是否有用。
像这样,使用concat()或concat\u ws或 || 操作员:

select concat_ws ('~', col1, col2, col3, col4)
...
group by concat_ws ('~', col1, col2, col3, col4)

col1||'~'||col2||'~'||...||colN

还应注意空值。在使用nvl函数连接之前,用空字符串替换null。

相关问题