복붙노트

[HADOOP] 테이블 크기 (행 수)를 빠르게 찾기위한 하이브 쿼리

HADOOP

테이블 크기 (행 수)를 빠르게 찾기위한 하이브 쿼리

시간 소모적 인 MapReduce 작업을 시작하지 않고 테이블 크기 (즉, 행 수)를 빠르게 찾을 수있는 하이브 쿼리가 있습니까? (그래서 COUNT (*)를 피하고 싶습니다.)

나는 DESCRIBE EXTENDED를 시도했지만 numRows = 0을 얻었는데 이는 분명히 올바르지 않습니다.

(newb 질문에 대한 사과. 인터넷 검색을 시도하고 apache.org 문서를 검색하지 않고 성공했습니다.)

해결법

  1. ==============================

    1.tblproperties는 테이블의 크기를 알려주고 필요한 경우 해당 값을 가져 오는 데 사용할 수 있습니다.

    tblproperties는 테이블의 크기를 알려주고 필요한 경우 해당 값을 가져 오는 데 사용할 수 있습니다.

    -- gives all properties
    show tblproperties yourTableName
    
    -- show just the raw data size
    show tblproperties yourTableName("rawDataSize")
    
  2. ==============================

    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. ==============================

    3.사용 방법 :

    사용 방법 :

        hdfs dfs -du -s -h /path/to/table/name
    
  4. ==============================

    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. ==============================

    5.마루판 형식을 사용하여 외부 / 내부 테이블의 데이터를 저장하십시오. 그러면 더 빨리 결과를 얻을 수 있습니다.

    마루판 형식을 사용하여 외부 / 내부 테이블의 데이터를 저장하십시오. 그러면 더 빨리 결과를 얻을 수 있습니다.

  6. ==============================

    6.그것은 좋은 질문입니다. count ()는 결과를 찾는 데 많은 시간이 걸립니다. 그러나 불행히도 count ()만이 할 수있는 유일한 방법입니다.

    그것은 좋은 질문입니다. count ()는 결과를 찾는 데 많은 시간이 걸립니다. 그러나 불행히도 count ()만이 할 수있는 유일한 방법입니다.

    다른 방법이 있습니다 (위의 경우보다 대체 대기열을 더 잘 표현할 수는 없습니다).

    속성 설정

    set hive.exec.mode.local.auto = true;

    이전보다 더 나은 대기 시간을 제공하는 동일한 명령 (tbl에서 count (*) 선택)을 실행하십시오.

  7. from https://stackoverflow.com/questions/21208574/hive-query-to-quickly-find-table-size-number-of-rows by cc-by-sa and MIT license