Impala 쿼리를 통해 정확하진 않더라도 대략적인 distinct한 모수를 추정하고 싶을 때 사용할 수 있는 함수가 있어 간단히 확인한겸 옮겨 적어본다. 보통 추정에서 많이 사용되는 하이퍼로그로그와 비슷한 기능을 IMPALA에서도 제공하고 있다. 물론 적은 리소스를 가지고 효율적으로 추정만 하기에 정확한 모수를 알고 싶은경우는 패스하도록 한다. 차이는 대략 1.9%정도 났다. (일반적으로 3%정도 차이가 난다고 생각하면 된다.)
27억건의 데이터를 기준으로 ndv의 성능을 체크해보겠다.
+------------+
| count(uid) |
+------------+
| 2725811026 |
+------------+
ndv 함수를 활용해 distinct한 uid가 몇개나 있는지 확인 select ndv(uid)
+----------+
| ndv(uid) |
+----------+
| 73056968 |
+----------+
Fetched 1 row(s) in 14.59s
일반적인 쿼리를 통한 정확한 모수 확인 select count(distinct uid)
+---------------------+
| count(distinct uid) |
+---------------------+
| 74537396 |
+---------------------+
Fetched 1 row(s) in 148.32s
시간차이는 대략 10배 정도 빨랐으며 모수의 차이는 1.9%(1,480,428)정도 발생하였다.
대략적인 추정 모수만 빠르게 알고자하는 경우 사용하면 유용할 것 같다.
'Bigdata > QueryEngine' 카테고리의 다른 글
[ Impala ] Cloudera Impala Memory limit exceeded (0) | 2020.11.19 |
---|---|
[ Hive ] hive query lateral view explode udf로 string 처리하기 (0) | 2020.07.07 |
[ Impala ] Impala에서 drop table시 location지정된 hdfs파일 함께 지우기 (0) | 2020.04.20 |
hive, impala에서 특정 데이터포맷으로 날짜 가져오기 (0) | 2019.04.12 |
Hive external table drop시키기 (하둡 데이터도 삭제) (0) | 2019.03.26 |