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’);