2015-10-16 12 views
6

Hive wersja: 1.2.1Jak zredukować generowanie plików SQL "Zmienić tabelę/partycję połączoną" w Hive?

Konfiguracja:

set hive.execution.engine=tez; 
set hive.merge.mapredfiles=true; 
set hive.merge.smallfiles.avgsize=256000000; 
set hive.merge.tezfiles=true; 

HQL:

ALTER TABLE `table_name` PARTITION (partion_name1 = 'val1', partion_name2='val2', partion_name3='val3', partion_name4='val4') CONCATENATE; 

używam HQL scalić pliki określonej tabeli partycji /. Jednak po wykonaniu istnieje jeszcze wiele plików w katalogu wyjściowym; a ich rozmiar jest znacznie mniejszy niż 256000000. Więc jak zmniejszyć liczbę plików wyjściowych.

BTW, użyj MapReduce zamiast Tez również nie działa.

+0

Czy możesz opublikować tabelę DDL? – SrinivasR

Odpowiedz

-1

Możesz ustawić swój numer reduktora na 1, a następnie utworzy tylko jeden plik wyjściowy.

Możesz to zrobić, wykonując następujące czynności;

set mapred.reduce.tasks=1 
+0

Użyty silnik wykonawczy to tez ... – mgaido

+0

Proszę sprawdzić komentarz: BTW, użyj MapReduce zamiast Tez również nie działa. Więc może użyć MapReduce, jeśli chce. Dodatkowo możesz użyć powyższej konfiguracji również dla Tez. – Ducaz035

+0

W każdym razie mogę zapewnić, że to nie rozwiąże – mgaido

-1

Może u można spróbować insert overwrite table ... partition (...) select * from ...

ten można wykorzystać ustawienie tezfiles scalanie.