복붙노트

[HADOOP] Select Count (*)가 Select *보다 느린 이유는 하이브입니다.

HADOOP

Select Count (*)가 Select *보다 느린 이유는 하이브입니다.

하이브를 사용하여 VirtualBox Sandbox에서 쿼리를 실행할 때. Select count (*)가 Select *보다 너무 느립니다.

아무도 뒤에서 무슨 일이 일어날 지 설명 할 수 있습니까?

그리고 왜이 지연이 일어나고 있습니까?

해결법

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

    1.

    select * from table
    

    지도 만 할 수는 있지만

    Select Count(*) from table 
    

    그것은지도 일 수 있고 일을 줄입니다

    희망이 도움이됩니다.

  2. ==============================

    2.하이브 쿼리가 수행 할 수있는 작업에는 세 가지 유형이 있습니다.

    하이브 쿼리가 수행 할 수있는 작업에는 세 가지 유형이 있습니다.

    가장 저렴하고 빠른 속도로 여기에서 더 비싸고 느린 순서입니다.

    하이브 쿼리는 메타 데이터 전용 요청 일 수 있습니다.

    테이블 표시, 설명 테이블이 그 예입니다. 이러한 쿼리에서 하이브 프로세스는 메타 데이터 서버에서 조회를 수행합니다. 메타 데이터 서버는 SQL 데이터베이스, 아마도 MySQL이지만 실제 DB는 구성 가능합니다.

    하이브 쿼리는 hdfs get 요청이 될 수 있습니다. 표에서 *를 선택하십시오. 이 경우 하이브는 hdfs 작업을 수행하여 결과를 반환 할 수 있습니다. hadoop fs -get, 더 많거나 적은.

    하이브 쿼리는지도 축소 작업 일 수 있습니다.

    Hive는 항아리를 hdfs로 보내야하며, 구직자는 작업을 대기열에 넣고, tasktracker는 작업을 실행하고, 최종 데이터는 hdfs에 저장되거나 클라이언트로 전달됩니다.

    지도 축소 작업에는 다른 가능성이 있습니다.

    지도 전용 작업이 될 수 있습니다. id> 100 인 테이블에서 *를 선택하십시오. 예를 들어 해당 논리를 모두 매퍼에 적용 할 수 있습니다.

    그것은 Map과 Reduce job 일 수 있으며, 표에서 min (id)을 선택하십시오. ID별로 테이블 순서에서 *를 선택하십시오.

    또한 여러 맵 축소 패스로 이어질 수 있지만, 위의 내용은 일부 동작을 요약 한 것입니다.

  3. ==============================

    3.이것은 DB가 클러스터 된 기본 키를 사용하여 쿼리가 각 행을 키에 대해 개별적으로 검색하므로 인덱스가 아닌 행을 고민하게합니다.

    이것은 DB가 클러스터 된 기본 키를 사용하여 쿼리가 각 행을 키에 대해 개별적으로 검색하므로 인덱스가 아닌 행을 고민하게합니다.

  4. from https://stackoverflow.com/questions/17060630/why-is-select-count-slower-than-select-in-hive by cc-by-sa and MIT license