복붙노트

[HADOOP] Tez 및 Map reduce에서 "count (*)"를 실행하는 동안 동작의 차이

HADOOP

Tez 및 Map reduce에서 "count (*)"를 실행하는 동안 동작의 차이

최근 에이 문제가 발생했습니다. Hadoop 분산 파일 시스템 경로 및 관련 하이브 테이블에 파일이 있습니다. 테이블에는 양쪽에 30 개의 파티션이 있습니다.

HDFS에서 5 개의 파티션을 삭제 한 후 "msck repair table ;"을 실행했습니다. 하이브 테이블에. 잘 완성되었지만 출력되었습니다.

select count (*) ;을 실행하려고했습니다. (tez에서) 다음 오류로 실패했습니다.

그러나 hive.execution.engine을 "mr"로 설정하고 "select count (*) ;"을 실행하면 문제없이 잘 작동했습니다.

지금 두 가지 질문이 있습니다.

도움을 주셔서 감사합니다.

해결법

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

    1.MSCK [복구] 테이블 table_name [ADD / DROP / SYNC PARTITIONS];

    MSCK [복구] 테이블 table_name [ADD / DROP / SYNC PARTITIONS];

    이렇게하면 메타 데이터가 아직없는 파티션의 파티션에 대한 메타 데이터가 Hive 메타 스토어로 업데이트됩니다. MSC 명령의 기본 옵션은 ADD PARTITIONS입니다. 이 옵션을 사용하면 HDFS에는 있지만 메타 스토어에는없는 파티션을 메타 스토어에 추가합니다. DROP PARTITIONS 옵션은 이미 HDFS에서 제거 된 메타 스토어에서 파티션 정보를 제거합니다. SYNC PARTITIONS 옵션은 ADD 및 DROP PARTITIONS를 모두 호출하는 것과 같습니다.

    그러나 이것은 Hive 버전 3.0에서만 사용할 수 있습니다. 참조-HIVE-17824

    귀하의 경우 버전은 Hive 1.2이며 아래는 Metastore에서 HDFS 파티션과 테이블 파티션을 동기화하는 단계입니다.

    ALTER TABLE DROP PARTITION ();

    HDFS에서와 같이 HMS의 파티션을 동기화해야합니다.

    또는 테이블 (EXTERNAL 테이블 인 경우)을 삭제하고 다시 작성하고 새로 작성된 테이블에서 MSCK REPAIR를 수행 할 수 있습니다. 외부 테이블을 삭제해도 기본 데이터는 삭제되지 않습니다.

    참고 : 기본적으로 MSCK REPAIR는 HDFS의 새로 추가 된 파티션 만 Hive Metastore에 추가하며 Hive Metastore에서 HDFS에서 수동으로 삭제 된 파티션은 삭제하지 않습니다.

    ====

    나중에 이러한 단계를 피하려면 Hive에서 ALTER TABLE DROP PARTITION ()을 사용하여 파티션을 직접 삭제하는 것이 좋습니다.

  2. from https://stackoverflow.com/questions/57679143/diffrence-in-behaviour-while-running-count-in-tez-and-map-reduce by cc-by-sa and MIT license