복붙노트

[HADOOP] 하이브 : 구성 설정 병합이 작동하지 않습니다

HADOOP

하이브 : 구성 설정 병합이 작동하지 않습니다

Hive 2.2.0에서 쿼리를 사용하여 1.34GB 크기의 다른 소스 테이블에서 오크 테이블을 채우고 있습니다.

INSERT INTO TABLE TableOrc SELECT * FROM Table; ---- (1)

쿼리는 6 개의 orc 파일로 테이블 ORC 테이블을 작성하는데, 이는 블록 크기 256MB보다 훨씬 작습니다.

-- FolderList1
-rwxr-xr-x  user1   supergroup  65.01 MB    1/1/2016, 10:14:21 AM   1   256 MB  000000_0
-rwxr-xr-x  user1   supergroup  67.48 MB    1/1/2016, 10:14:55 AM   1   256 MB  000001_0
-rwxr-xr-x  user1   supergroup  66.3 MB     1/1/2016, 10:15:18 AM   1   256 MB  000002_0
-rwxr-xr-x  user1   supergroup  63.83 MB    1/1/2016, 10:15:41 AM   1   256 MB  000003_0
-rwxr-xr-x  user1   supergroup  69.11 MB    1/1/2016, 10:15:57 AM   1   256 MB  000004_0
-rwxr-xr-x  user1   supergroup  23.83 MB    1/1/2016, 10:16:02 AM   1   256 MB  000005_0

이것을 잠재적으로 제거하기 위해 아래의 구성이 여러 다른 스택 오버 플로우 사용자가 제안한대로 사용되며 TableORC가 잘리고 쿼리 (1)이 다시 실행됩니다.

SET hive.merge.mapfiles=true;
SET hive.merge.mapredfiles=true;
SET hive.merge.size.per.task=128000000; -- (128MB)
SET hive.merge.smallfiles.avgsize=128000000; -- (128MB)

이번에는 결과에 3 개의 ORC 파일이있는 TableOrc가 있고 LOGS에 3 개의 추가 MR 작업이 표시됩니다.

-- FolderList2
 -rwxr-xr-x user1   supergroup  132.49 MB   1/1/2016, 11:47:01 PM   1   256 MB  000000_0
 -rwxr-xr-x user1   supergroup  130.12 MB   1/1/2016, 11:47:02 PM   1   256 MB  000001_0
 -rwxr-xr-x user1   supergroup  92.93 MB    1/1/2016, 11:47:03 PM   1   256 MB  000002_0

내 질문은 구성 설정이 128MB (https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)를 사용하도록 설정된 경우 ORC 파일 크기가 128MB보다 큰 이유입니다.

hive.merge.size.per.task
Default Value: 256000000
Added In: Hive 0.4.0
Size of merged files at the end of the job.

해결법

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

    1.초기 평균 파일 크기가 hive.merge.smallfiles.avgsize보다 작기 때문에 병합 작업이 파일 병합을 시작했습니다. 처음 두 파일은 65.01MB + 67.48MB = 132.49MB로 병합되었습니다. 이것은 'hive.merge.size.per.task'보다 크기 때문에 병합 작업이이 결과 파일을 더 많은 파일과 병합하는 것을 중지하는 이유입니다. 정확히 128M으로 분할되지 않습니다. 작동하는 방법은 매우 간단합니다.

    초기 평균 파일 크기가 hive.merge.smallfiles.avgsize보다 작기 때문에 병합 작업이 파일 병합을 시작했습니다. 처음 두 파일은 65.01MB + 67.48MB = 132.49MB로 병합되었습니다. 이것은 'hive.merge.size.per.task'보다 크기 때문에 병합 작업이이 결과 파일을 더 많은 파일과 병합하는 것을 중지하는 이유입니다. 정확히 128M으로 분할되지 않습니다. 작동하는 방법은 매우 간단합니다.

  2. from https://stackoverflow.com/questions/48291181/hive-merging-configuration-settings-not-working by cc-by-sa and MIT license