Hive udostępnia język zapytań typu SQL do celów ETL na szczycie systemu plików Hadoop.
Język zapytań Hive (HiveQL) zapewnia środowisko typu SQL w programie Hive do pracy z tabelami, bazami danych i zapytaniami.
Możemy mieć różne typy klauzul skojarzonych z Hive, aby wykonywać różne operacje na danych i zapytania. Dla lepszej łączności z różnymi węzłami poza środowiskiem. HIVE zapewnia również łączność JDBC.
Zapytania Hive zapewniają następujące funkcje:
- Modelowanie danych, takie jak tworzenie baz danych, tabel itp.
- Funkcjonalności ETL, takie jak wyodrębnianie, transformacja i ładowanie danych do tabel
- Łączy, aby scalić różne tabele danych
- Niestandardowe skrypty użytkownika dla ułatwienia kodowania
- Szybsze narzędzie do wysyłania zapytań na platformie Hadoop
W tym artykule dowiesz się-
- Zamów według zapytania
- Grupuj według zapytania
- Sortuj według
- Klaster wg
- Dystrybucja przez
Tworzenie tabeli w gałęzi
Przed rozpoczęciem pracy z naszym głównym tematem tego samouczka, najpierw utworzymy tabelę, która posłuży jako odniesienie do następnego samouczka.
W tym samouczku utworzymy tabelę „workers_guru” z 6 kolumnami.
Na powyższym zrzucie ekranu
- Tworzymy tabelę „workers_guru” z 6 wartościami kolumn, takimi jak Id, Imię, Wiek, Adres, Wynagrodzenie, Dział, która należy do pracowników obecnych w organizacji „guru”.
- Tutaj, w tym kroku, ładujemy dane do tabeli workers_guru. Dane, które będziemy wczytywać, zostaną umieszczone w pliku Employees.txt
Zamów według zapytania:
Składnia ORDER BY w HiveQL jest podobna do składni ORDER BY w języku SQL.Porządkuj według to klauzula, której używamy z instrukcją „SELECT” w zapytaniach Hive, która pomaga sortować dane. Klauzula Order by używa kolumn w tabelach programu Hive do sortowania określonych wartości kolumn wymienionych z opcją Order by. Niezależnie od nazwy kolumny, którą definiujemy kolejność według klauzuli, zapytanie wybierze i wyświetli wyniki w kolejności rosnącej lub malejącej poszczególnych wartości kolumn.
Jeśli wspomniana kolejność pól jest ciągiem znaków, to wyświetli wynik w porządku leksykograficznym. Z tyłu musi zostać przekazany do pojedynczego reduktora.
Na powyższym zrzucie ekranu możemy zaobserwować, co następuje
- Jest to zapytanie, które wykonuje się na tabeli „workers_guru” z klauzulą ORDER BY z działem zdefiniowanym jako nazwa kolumny ORDER BY.
„Dział” to Ciąg, więc wyniki będą wyświetlane w kolejności leksykograficznej.
- To jest rzeczywisty wynik zapytania. Jeśli dobrze to zaobserwujemy, zobaczymy, że uzyskuje wyniki wyświetlane w oparciu o kolumnę Departamentu, taką jak ADMINISTRACJA, Finanse itp. W kolejności, w jakiej ma zostać wykonane zapytanie.
Zapytanie:
SELECT * FROM employees_guru ORDER BY Department;
Grupuj według zapytania:
Klauzula Group by używa kolumn w tabelach programu Hive do grupowania określonych wartości kolumn wymienionych w funkcji Group by. Niezależnie od nazwy kolumny, którą definiujemy jako klauzulę „groupby”, zapytanie wybierze i wyświetli wyniki poprzez grupowanie poszczególnych wartości kolumny.
Na przykład na poniższym zrzucie ekranu wyświetli całkowitą liczbę pracowników obecnych w każdym dziale. Tutaj mamy „Dział” jako Grupę według wartości.
Na powyższym zrzucie ekranu zobaczymy, co następuje
- Jest to zapytanie, które jest wykonywane na tabeli „workers_guru” z klauzulą GROUP BY z działem zdefiniowanym jako nazwa kolumny GROUP BY.
- Wyświetlane dane wyjściowe to nazwa działu i liczba pracowników w różnych działach. Tutaj wszyscy pracownicy należący do określonego działu są pogrupowani według i wyświetlani w wynikach. Wynik to nazwa działu z całkowitą liczbą pracowników obecnych w każdym dziale.
Pytanie:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Sortuj według:
Klauzula Sort by wykonuje na nazwach kolumn tabel programu Hive, aby posortować dane wyjściowe. Możemy wspomnieć DESC, aby posortować kolejność w porządku malejącym, a ASC, aby posortować je w porządku rosnącym.
W tym sortowaniu będzie sortować rzędy przed podaniem do reduktora. Zawsze sortowanie według zależy od typów kolumn.
Na przykład, jeśli typy kolumn są numeryczne, sortowanie odbywa się w kolejności numerycznej, jeśli typy kolumn są typu łańcuchowego, sortowanie odbywa się w porządku leksykograficznym.
Na powyższym zrzucie ekranu możemy zauważyć, co następuje:
- Jest to zapytanie, które wykonuje na tabeli „workers_guru” z klauzulą SORT BY z „id” jako definicją nazwy kolumny SORT BY. Użyliśmy słowa kluczowego DESC.
- Zatem wyświetlone dane wyjściowe będą w porządku malejącym „id”.
Pytanie:
SELECT * from employees_guru SORT BY Id DESC;
Klaster według:
Cluster By używany jako alternatywa dla klauzul Distribute BY i Sort BY w Hive-QL.
Klauzula Cluster BY używana w tabelach obecnych w gałęzi. Hive używa kolumn w klastrze według do dystrybucji wierszy między reduktorami. Kolumny klastra BY przejdą do wielu reduktorów.
- Zapewnia sortowanie kolejności wartości występujących w wielu reduktorach
Na przykład klauzula Cluster By wymieniona w nazwie kolumny Id tabeli workers_guru. Dane wyjściowe podczas wykonywania tego zapytania dadzą wyniki wielu reduktorom na zapleczu. Ale jako front-end jest alternatywną klauzulą zarówno dla Sortuj według, jak i Dystrybuuj według.
W rzeczywistości jest to proces zaplecza, gdy wykonujemy zapytanie z sortowaniem, grupowaniem i klastrowaniem według struktury Map redukuj. Więc jeśli chcemy przechowywać wyniki w wielu reduktorach, wybieramy Cluster By.
Z powyższego zrzutu ekranu otrzymujemy następujące spostrzeżenia:
- To zapytanie wykonuje klauzulę CLUSTER BY na wartości pola Id. Tutaj otrzyma sortowanie według wartości Id.
- Wyświetla identyfikator i nazwy obecne w sortowaniu guru_employees według
Pytanie:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Dystrybucja przez:
Klauzula Distribute BY używana w tabelach obecnych w gałęzi. Hive używa kolumn w Rozłóż według, aby rozprowadzić wiersze między reduktorami. Wszystkie kolumny Distribute BY trafią do tego samego reduktora.
- Zapewnia to, że każdy z reduktorów N otrzymuje nie nakładające się zakresy kolumny
- Nie sortuje danych wyjściowych każdego reduktora
Na powyższym zrzucie ekranu możemy zauważyć, co następuje
- DYSTRYBUCJA PRZEZ Klauzulę wykonującą na Id tabeli „empoloyees_guru”
- Dane wyjściowe zawierające identyfikator, nazwę. Na końcu przejdzie do tego samego reduktora
Pytanie:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;