2017-04-09 5 views
1

나는 다음과 같은 속성Hive에서 combineInputFormat은 어떻게 작동합니까?

  • Unbucketed
  • 3.5 MB 각
  • 50 개 파일을 갖는

  • 분할되지 않은
    • 이 TextFile 형식으로 하이브 테이블이 포맷을 DESCRIBE "에서 테이블 매개 변수를 따릅니다 "명령

      테이블 매개 변수 :

      COLUMN_STATS_ACCURATE true 
          numFiles    50 
          totalSize    170774650 
      

      나는이 테이블에 COUNT (*) 작업을 수행하고 있으며 함께 실행

      • 4 매퍼 내 독립 클러스터 AWS 클러스터
      • 1 매퍼 1 감속기 1 감속기 . 의사 클러스터 모드 설치]

      모두 하이브 세션의 최대 크기는 분할 2백56메가바이트

      결합 입력 형식이 어떻게 작동하는지 알고 싶습니까?

      단일 컴퓨터에서는 모든 파일/블록이 동일한 컴퓨터에 있고 데이터를 합친 크기가 최대 분할 크기보다 작으므로 단일 분할 및 따라서 단일 매퍼 을 요구합니다.

      다른 경우 AWS 클러스터로 인해 4 개의 매퍼가 생성되었습니다. 나는 CombineInputFormat이 rack/machine 지역을 사용하지만 정확히 어떻게 사용했는지 읽었다.

      미리 답변 해 주셔서 감사합니다.

  • 답변

    0

    답변 없음 !!! 나는 시간이 지남에 그것을 알아 내서 오늘 내 스택 오버플로 계정을 방문하고 있던이 불길한 질문을 답이 앉아있는 것으로 나타났습니다. 그래서 세부 사항을 따른다.

    분할은 입력 경로 아래의 파일로 구성됩니다. 분할에는 여러 풀의 파일이있을 수 없습니다. 반환 된 각 분할은 다른 파일의 블록을 포함 할 수 있습니다. maxSplitSize가 지정된 경우 동일한 노드의 블록이 결합되어 단일 분할을 형성합니다. 남은 블록은 같은 랙에있는 다른 블록과 결합됩니다. maxSplitSize를 지정하지 않으면 동일한 랙의 블록이 단일 분할로 결합됩니다. 노드 - 로컬 스플릿을 만들려고 시도하지 않습니다. maxSplitSize가 블록 크기와 같으면이 클래스는 Hadoop의 기본 분할 동작과 유사합니다. 각 블록은 로컬로 처리되는 분할입니다. 서브 클래스는 InputFormat.createRecordReader (InputSplit, TaskAttemptContext)를 구현하여 CombineFileSplit의 RecordReader를 생성합니다.

    비슷한 질문이있는 사람에게 도움이되기를 바랍니다.