Hive - Partycjonowanie
Hive organizuje tabele w partycje. Jest to sposób na podzielenie tabeli na powiązane części na podstawie wartości podzielonych kolumn, takich jak data, miasto i dział. Korzystając z partycji, można łatwo przeszukać część danych.
Tabele lub partycje są podzielone na buckets,zapewnienie dodatkowej struktury danych, które mogą być używane do wydajniejszego wykonywania zapytań. Bucketing działa w oparciu o wartość funkcji skrótu jakiejś kolumny tabeli.
Na przykład tabela o nazwie Tab1zawiera dane pracownika, takie jak identyfikator, imię i nazwisko, dział i rok (tj. rok przystąpienia). Załóżmy, że musisz pobrać szczegółowe informacje o wszystkich pracownikach, którzy dołączyli w 2012 r. Zapytanie przeszukuje całą tabelę pod kątem wymaganych informacji. Jeśli jednak podzielisz dane pracowników według roku i zapiszesz je w oddzielnym pliku, skróci to czas przetwarzania zapytania. Poniższy przykład pokazuje, jak podzielić plik i jego dane na partycje:
Poniższy plik zawiera tabelę Employeedata.
/ tab1 / Employeedata / file1
id, name, dept, yoj
1, gopal, TP, 2012
2, kiran, HR, 2012
3, kaleel,SC, 2013
4, Prasanth, SC, 2013
Powyższe dane są podzielone na dwa pliki przy użyciu roku.
/ tab1 / Employeedata / 2012 / file2
1, gopal, TP, 2012
2, kiran, HR, 2012
/ tab1 / Employeedata / 2013 / file3
3, kaleel,SC, 2013
4, Prasanth, SC, 2013
Dodawanie partycji
Możemy dodać partycje do tabeli, zmieniając tabelę. Załóżmy, że mamy tabelę o nazwieemployee z polami takimi jak identyfikator, imię i nazwisko, wynagrodzenie, stanowisko, dział i rok.
Składnia:
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;
partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)
Poniższe zapytanie służy do dodawania partycji do tabeli pracowników.
hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> location '/2012/part2012';
Zmiana nazwy partycji
Składnia tego polecenia jest następująca.
ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
Następujące zapytanie służy do zmiany nazwy partycji:
hive> ALTER TABLE employee PARTITION (year=’1203’)
> RENAME TO PARTITION (Yoj=’1203’);
Upuszczanie partycji
Do usunięcia partycji używana jest następująca składnia:
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;
Następujące zapytanie służy do usuwania partycji:
hive> ALTER TABLE employee DROP [IF EXISTS]
> PARTITION (year=’1203’);