[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.초기 평균 파일 크기가 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으로 분할되지 않습니다. 작동하는 방법은 매우 간단합니다.
from https://stackoverflow.com/questions/48291181/hive-merging-configuration-settings-not-working by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hbase API를 사용하여 지역 이름을 얻는 올바른 방법 (0) | 2019.08.17 |
---|---|
[HADOOP] java.io.IOException : LocateBlock의 블록 길이를 얻을 수 없습니다 (0) | 2019.08.17 |
[HADOOP] Spark 프로그램의 HDFS 복제 요소를 어떻게 변경합니까? (0) | 2019.08.16 |
[HADOOP] Hive의 정규 표현식에서 여러 일치 항목 처리 (0) | 2019.08.16 |
[HADOOP] Python을 통해 HDFS에서 여러 파일 처리 (0) | 2019.08.16 |