Hive中Group By的去重
Jun 07, 2016 pm 04:37 PM在Hive的是用中,我们经常会有这种需求: 按照同一个id进行Group By,然后对另一个字段去重,例如下面得数据: id pic1.jpg2.jpg1.jpg 此时,是用DISTINCT或者2 col得Group By都是不行得,我们可以用这个UDAF:collect_set(col),它将对同一个group by 得ke
在Hive的是用中,我们经常会有这种需求:
按照同一个id进行Group By,然后对另一个字段去重,例如下面得数据:
id pic 1.jpg 2.jpg 1.jpg
此时,是用DISTINCT或者2 col得Group By都是不行得,我们可以用这个UDAF:collect_set(col),它将对同一个group by 得key进行set去重后,转换为一个array。
再举一个例子,我们可以对pic进行去重,拼接:
SELECT id, CONCAT_WS(',', COLLECT_SET(pic)) FROM tbl GROUP BY id
在这里CONCAT_WS是UDF,COLLECT_SET是UDAF,它将group后的pic去重,并转换为了array,方便udf是用。
PS:如果不需要去重,可以使用COLLECT_LIST。
更多UDAF,见这里 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
原文地址:Hive中Group By的去重, 感谢原作者分享。

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Pandas의 효율적인 데이터 중복 제거 방법 공개: 중복 데이터를 빠르게 제거하는 팁

Java 개발에서 컬렉션 정렬 및 중복 제거 성능을 최적화하는 방법

PHP 배열을 섞은 후 중복 제거 작업을 수행하는 방법은 무엇입니까?
