[HADOOP] 테이블 크기 (행 수)를 빠르게 찾기위한 하이브 쿼리
HADOOP테이블 크기 (행 수)를 빠르게 찾기위한 하이브 쿼리
시간 소모적 인 MapReduce 작업을 시작하지 않고 테이블 크기 (즉, 행 수)를 빠르게 찾을 수있는 하이브 쿼리가 있습니까? (그래서 COUNT (*)를 피하고 싶습니다.)
나는 DESCRIBE EXTENDED를 시도했지만 numRows = 0을 얻었는데 이는 분명히 올바르지 않습니다.
(newb 질문에 대한 사과. 인터넷 검색을 시도하고 apache.org 문서를 검색하지 않고 성공했습니다.)
해결법
-
==============================
1.tblproperties는 테이블의 크기를 알려주고 필요한 경우 해당 값을 가져 오는 데 사용할 수 있습니다.
tblproperties는 테이블의 크기를 알려주고 필요한 경우 해당 값을 가져 오는 데 사용할 수 있습니다.
-- gives all properties show tblproperties yourTableName -- show just the raw data size show tblproperties yourTableName("rawDataSize")
-
==============================
2.다음은 빠른 명령입니다.
다음은 빠른 명령입니다.
ANALYZE TABLE tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATISTICS [noscan];
예를 들어, 테이블이 분할 된 경우
hive> ANALYZE TABLE ops_bc_log PARTITION(day) COMPUTE STATISTICS noscan;
출력은
파티션 logdata.ops_bc_log {day = 20140523} 통계 : [numFiles = 37, numRows = 26095186, totalSize = 654249957, rawDataSize = 58080809507]
파티션 logdata.ops_bc_log {day = 20140521} 통계 : [numFiles = 30, numRows = 21363807, totalSize = 564014889, rawDataSize = 47556570705]
파티션 logdata.ops_bc_log {day = 20140524} 통계 : [numFiles = 35, numRows = 25210367, totalSize = 631424507, rawDataSize = 56083164109]
파티션 logdata.ops_bc_log {day = 20140522} 통계 : [numFiles = 37, numRows = 26295075, totalSize = 657113440, rawDataSize = 58496087068]
승인
찍은 시간 : 5.252 초
-
==============================
3.사용 방법 :
사용 방법 :
hdfs dfs -du -s -h /path/to/table/name
-
==============================
4.해결책은 아니지만 빨리 테이블이 파티션 된 경우 각 파티션의 파티션 수 및 개수 (행 수)를 계산할 수 있습니다. 예를 들면 다음과 같습니다. 날짜 별 파티션 (mm-dd-yyyy)
해결책은 아니지만 빨리 테이블이 파티션 된 경우 각 파티션의 파티션 수 및 개수 (행 수)를 계산할 수 있습니다. 예를 들면 다음과 같습니다. 날짜 별 파티션 (mm-dd-yyyy)
select partition_date, count(*) from <table_name> where <partion_column_name> >= '05-14-2018' group by <partion_column_name>
-
==============================
5.마루판 형식을 사용하여 외부 / 내부 테이블의 데이터를 저장하십시오. 그러면 더 빨리 결과를 얻을 수 있습니다.
마루판 형식을 사용하여 외부 / 내부 테이블의 데이터를 저장하십시오. 그러면 더 빨리 결과를 얻을 수 있습니다.
-
==============================
6.그것은 좋은 질문입니다. count ()는 결과를 찾는 데 많은 시간이 걸립니다. 그러나 불행히도 count ()만이 할 수있는 유일한 방법입니다.
그것은 좋은 질문입니다. count ()는 결과를 찾는 데 많은 시간이 걸립니다. 그러나 불행히도 count ()만이 할 수있는 유일한 방법입니다.
다른 방법이 있습니다 (위의 경우보다 대체 대기열을 더 잘 표현할 수는 없습니다).
속성 설정
set hive.exec.mode.local.auto = true;
이전보다 더 나은 대기 시간을 제공하는 동일한 명령 (tbl에서 count (*) 선택)을 실행하십시오.
from https://stackoverflow.com/questions/21208574/hive-query-to-quickly-find-table-size-number-of-rows by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HDFS가 청취하고있는 포트 번호를 찾으십시오. (0) | 2019.07.05 |
---|---|
[HADOOP] Hadoop 안전 모드 복구 - 너무 오래 걸림! (0) | 2019.07.05 |
[HADOOP] 하이브 : 테이블의 모든 파티션을 표시하는 방법? (0) | 2019.07.05 |
[HADOOP] 수백만 개의 레코드를 실시간으로 쿼리 / 수집 - hadoop? hbase? 카산드라? (0) | 2019.07.05 |
[HADOOP] 학습을 시작하는 방법 hadoop [닫힘] (0) | 2019.07.05 |