티스토리 뷰
반응형
단순히 "select * from 테이블" 형태로 조회하면 결과가 나오는데, 희안하게 "select count(*) from 테이블" 형태로 쿼리를 나오면 0으로 나오는 현상이다. 이 경우 hive 의 통계 자료가 잘못 입력되어있어서 그런 경우가 간혹 생기는 경우가 있다.
결과가 이상한 쿼리 예시
다음과 같이 단순 select 하면 결과가 분명히 나오는데, count(*) 하면 결과가 0으로 나오는것이다.
---------------------------
-- 단순 조회를 하면 결과가 나옴
---------------------------
hive> select * from mig.t_my_data;
-- 결과가 40 건 출력됨 --
---------------------------
-- count(*) 결과가 0이 나옴 !!!! (왜 40건이 아니지)
---------------------------
hive> select count(*) from mig.t_my_data;
0
통계정보 다시 집계하기
가끔 통계정보에 0으로 카운팅 정보가 존재해서 엉뚱하게 0으로 나오는 경우가 존재한다.
이런경우는 다음과 같이 통계정보를 분석하도록 analyze 명령을 사용해보자.
hive> analyze table mig.t_my_data compute statistics;
Query ID = user_20200719172254_1c61358a-4095-4d1b-6569-a5dx8687442b
Total jobs = 1
Launching Job 1 out of 1
Tez session was closed. Reopening...
Session re-established.
Status: Running (Executing on YARN cluster with App id application_1520129489197_520219)
--------------------------------------------------------------------------------
VERTICES STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED
--------------------------------------------------------------------------------
Map 1 .......... SUCCEEDED 1 1 0 0 0 0
--------------------------------------------------------------------------------
VERTICES: 01/01 [==========================>>] 100% ELAPSED TIME: 3.62 s
--------------------------------------------------------------------------------
Table mig.t_my_data stats: [numFiles=1, numRows=34, totalSize=4342, rawDataSize=4308]
OK
Time taken: 9.49 seconds
--------------------------------------
-- 데이터가 있는데 0으로 나온게 제대로 카운팅됨
--------------------------------------
hive> select count(*) from mig.t_my_data;
OK
40
Time taken: 0.1 seconds, Fetched: 1 row(s)
이런 문제라면 "show create table 테이블명" 형태로 테이블 생성 정보를 확인해보면 TBLPROPERTIES 정보의 "numRows" 나 "numFiles" 정보가 0으로 된 정의된 특이한 경우 이런 현상이 발생되었다. 통계정보를 실행하기전 테이블이 정보를 확인해보자.
반응형
'데이터처리 > Hive' 카테고리의 다른 글
[용어] Hive 에서 테이블/파티션/버킷의 의미 알기 - hdfs 와 맵핑 (0) | 2021.11.20 |
---|---|
[오류] Hive 에서 Struct 테이블 Join 시 오류 회피하는 방법 (0) | 2021.11.19 |
[오류] Hive 의 deadLock 문제 - lock 사용안하기 (0) | 2021.11.16 |
[명령어] hive 에서 ddl 추출하기 (create table 명령 확인하기) (0) | 2021.11.12 |
[오류] hive 쿼리 에러 해결방법 : SemanticException Exception when trying to remove partition predicates: fail to find child from parent (0) | 2021.11.02 |
댓글