복붙노트

[HADOOP] 하이브 COUNT (*) 쿼리가 호출되지 맵리 듀스

HADOOP

하이브 COUNT (*) 쿼리가 호출되지 맵리 듀스

나는 하이브 외부 테이블, 나는 TABLE_NAME 쿼리에서 SELECT COUNT (*)를 실행하려고하고 있지만 쿼리는 즉시 반환하고 이미 저장된 생각입니다 결과를 제공합니다. 쿼리에서 반환 된 결과가 올바르지 않습니다. 작업을 줄일지도를 강제로 쿼리 할 때마다 실행 할 수있는 방법이 있나요.

참고 :이 동작은 모든 외부 테이블하지만 그들 중 일부를 따르지.

사용 버전 : 하이브 0.14.0.2.2.6.0-2800, 하둡 2.6.0.2.2.6.0-2800 (호튼 웍스)

해결법

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

    1.일부 발견 후 나는 오크 테이블에 레코드 수를 카운트 MR 개막하는 방법을 가지고있다.

    일부 발견 후 나는 오크 테이블에 레코드 수를 카운트 MR 개막하는 방법을 가지고있다.

    '테이블 이름'파티션 ( '파티션 열')를 계산 통계 도표를 분석; --또는 TABLE '테이블 이름'계산 통계를 분석;

    이 카운트 (*)에 대한 직접적인 대안이 아니라 테이블의 레코드 최신 수를 제공합니다.

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

    2.데이터가 암호화되어 있기 때문에 ORC 데이터에 화장실 -l을 수행하면, 당신에게 정확한 결과를 제공하지 않습니다. 데이터가 한 줄에 하나의 행과 간단한 텍스트 파일 형식으로 저장 한 경우에 작동합니다.

    데이터가 암호화되어 있기 때문에 ORC 데이터에 화장실 -l을 수행하면, 당신에게 정확한 결과를 제공하지 않습니다. 데이터가 한 줄에 하나의 행과 간단한 텍스트 파일 형식으로 저장 한 경우에 작동합니다.

    그것은 총 수를 결정하기 위해 ORC 메타 데이터를 사용할 수 있기 때문에 하이브는 ORC 파일의 수 (*)의 맵리 듀스를 시작할 필요가 없습니다.

    명령 줄에서 ORC 데이터를 분석하는 orcfiledump 명령을 사용하여

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC#LanguageManualORC-ORCFileDumpUtility

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

    3.그것은 첫 번째 데이터 파일에서만 행의 수를 반환 즉 - 개인적인 경험에서, 오크 테이블에 COUNT (*)는 일반적으로 잘못된 수치를 반환합니다. 테이블이 여러 INSERT들에 의해 공급 된 경우에 당신은 붙어 있습니다.

    그것은 첫 번째 데이터 파일에서만 행의 수를 반환 즉 - 개인적인 경험에서, 오크 테이블에 COUNT (*)는 일반적으로 잘못된 수치를 반환합니다. 테이블이 여러 INSERT들에 의해 공급 된 경우에 당신은 붙어 있습니다.

    V0.13하면 절에 "1 = 1"더미 추가하여 더미 M / R 작업을 실행에 최적화를 속일 수 - 훨씬 더 오래 걸립니다,하지만 실제로 행을 계산합니다.

    0.14 최적화 똑똑 가지고, 당신은 예를 들어, 비 결정적 절을 추가해야합니다 "어디에있는 MyKey는 null입니다." 또 다른 추한 ORC 버그 -,있는 MyKey가 문자열이라고 가정하면, 그렇지 않으면 절 쿼리를 충돌 할 수 있습니다 "널 (null)입니다."

    그런데, 파티션 키 (들)에 SELECT DISTINCT는 잘못된 결과를 반환합니다 - 기존의 모든 파티션이 표시됩니다, 심지어 빈 것들. 이 시간 ORC에 해당하지 않습니다.

  4. ==============================

    4.아래 시도하십시오 :

    아래 시도하십시오 :

    맵리 듀스를 의무화하도록 하이브 세션에서 하이브> 설정 hive.fetch.task.conversion = 당신의 하이브 세션 없음 다음 선택 카운트를 트리거 (*) 작업

  5. from https://stackoverflow.com/questions/31671249/hive-count-query-is-not-invoking-mapreduce by cc-by-sa and MIT license