Zapytania Hive: porządkowanie według, grupowanie według, dystrybucja według, Cluster Według przykładów
Oprócz tego Hive zapewnia język zapytań typu SQL do celów ETL Hadoop system plików.
Język zapytań Hive (HiveQL) zapewnia środowisko typu SQL w Hive do pracy z tabelami, bazami danych i zapytaniami.
Możemy mieć inny typ klauzul skojarzonych z Hive w celu wykonywania różnych manipulacji danymi i wysyłania zapytań. Dla lepszej łączności z różnymi węzłami poza środowiskiem. HIVE zapewnia również łączność JDBC.
Zapytania Hive oferują następujące funkcje:
- Modelowanie danych, takie jak tworzenie baz danych, tabel itp.
- Funkcje ETL, takie jak ekstrakcja, transformacja i ładowanie danych do tabel
- Łączy do łączenia różnych tabel danych
- Skrypty niestandardowe dostosowane do potrzeb użytkownika ułatwiające kodowanie
- Szybsze narzędzie do wysyłania zapytań na platformie Hadoop
Tworzenie tabeli w ulu
Zanim przejdziemy do głównego tematu tego samouczka, najpierw utworzymy tabelę, która będzie służyć jako punkt odniesienia w kolejnym samouczku.
W tym samouczku utworzymy tabelę „employees_guru” z 6 kolumnami.
Z powyższego zrzutu ekranu wynika,
- Tworzymy tabelę „employees_guru” z 6 wartościami kolumn, takimi jak Id, Imię, Wiek, Adres, Wynagrodzenie, Dział, które należą do pracowników obecnych w organizacji „guru”.
- Tutaj, w tym kroku, ładujemy dane do tabeli workers_guru. Dane, które będziemy wczytywać znajdą się w pliku Employees.txt
Zamów według zapytania
Składnia ORDER BY w HiveQL jest podobna do składni ORDER BY w SQL język.
Order by to klauzula, której używamy z instrukcją „SELECT” w Zapytania dotyczące ula, który pomaga sortować dane. Klauzula Order by używa kolumn w tabelach Hive do sortowania określonych wartości kolumn wymienionych w opcji Order by. Bez względu na nazwę kolumny, którą definiujemy w klauzuli „order by”, zapytanie wybierze i wyświetli wyniki w kolejności rosnącej lub malejącej poszczególnych wartości kolumn.
Jeśli wspomniane pole Order by jest ciągiem znaków, wówczas wynik zostanie wyświetlony w porządku leksykograficznym. Z tyłu trzeba to przenieść na pojedynczy reduktor.
Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy
- Jest to zapytanie wykonywane na tabeli „employees_guru” z klauzulą ORDER BY z nazwą kolumny Dział zdefiniowaną w kolumnie ORDER BY. „Dział” to ciąg znaków, więc wyniki będą wyświetlane w porządku leksykograficznym.
- To jest rzeczywisty wynik zapytania. Jeśli przyjrzymy się mu dokładnie, możemy zobaczyć, że wyświetla wyniki na podstawie kolumny Department, takiej jak ADMIN, Finance itd., aby zapytanie zostało wykonane.
Zapytanie:
SELECT * FROM employees_guru ORDER BY Department;
Grupuj według zapytania
Klauzula Group by używa kolumn w tabelach Hive do grupowania określonych wartości kolumn wymienionych w opcji group by. Niezależnie od nazwy kolumny, w której definiujemy klauzulę „groupby”, zapytanie wybierze i wyświetli wyniki poprzez grupowanie poszczególnych wartości kolumn.
Na przykład na poniższym zrzucie ekranu zostanie wyświetlona całkowita liczba pracowników obecnych w każdym dziale. Tutaj mamy „Dział” jako grupę według wartości.
Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy
- Jest to zapytanie wykonywane na tabeli „employees_guru” z klauzulą GROUP BY z nazwą kolumny Dział zgodnie z zdefiniowaną nazwą GROUP BY.
- Wynik wyświetlany tutaj to nazwa działu i liczba pracowników w różnych działach. Tutaj wszyscy pracownicy należący do konkretnego działu są pogrupowani i wyświetlani w wynikach. Tak więc wynik to nazwa działu z całkowitą liczbą pracowników obecnych w każdym dziale.
zapytanie:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Sortuj według
Klauzula Sort by działa na nazwach kolumn tabel Hive w celu sortowania danych wyjściowych. Możemy wspomnieć o DESC w celu sortowania w porządku malejącym i wspomnieć o ASC w przypadku sortowania w porządku rosnącym.
W tym sortowaniu rzędy zostaną posortowane przed podaniem do reduktora. Zawsze sortuj według, zależy od typu kolumny.
Na przykład, jeśli typy kolumn są numeryczne, sortowanie będzie odbywało się w kolejności numerycznej, jeśli typy kolumn to ciągi, sortowanie będzie odbywało się w porządku leksykograficznym.
Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy:
- Jest to zapytanie wykonujące na tabeli „employees_guru” z klauzulą SORT BY z „id” zgodnie z zdefiniowaną nazwą kolumny SORT BY. Użyliśmy słowa kluczowego DESC.
- Wyświetlane dane wyjściowe będą zatem uporządkowane malejąco według „id”.
zapytanie:
SELECT * from employees_guru SORT BY Id DESC;
Cluster By
Cluster Używany jako alternatywa dla klauzul Distribute BY i Sort BY w Hive-QL.
Cluster Klauzula BY używana w tabelach obecnych w gałęzi Hive. Hive używa kolumn w Cluster poprzez rozdzielenie rzędów pomiędzy reduktory. Cluster Kolumny BY trafią do wielu reduktorów.
- Zapewnia sortowanie wartości występujących w wielu reduktorach
Na przykład, Cluster Klauzula By wymieniona w nazwie kolumny Id tabeli staff_guru. Dane wyjściowe podczas wykonywania tego zapytania dadzą wyniki wielu reduktorom na zapleczu. Ale jako interfejs jest to alternatywna klauzula zarówno dla Sortuj według, jak i Dystrybuuj według.
To jest w rzeczywistości proces back-end, gdy wykonujemy zapytanie z sortowaniem według, grupowaniem według i klastrowaniem według w ramach struktury Map Reduce. Tak więc, jeśli chcemy przechowywać wyniki w wielu reduktorach, wybieramy Cluster Przez.
Z powyższego zrzutu ekranu wynikają następujące wnioski:
- To jest zapytanie, które wykonuje klauzulę CLUSTER BY na wartości pola Id. Tutaj zostanie wykonane sortowanie na wartościach Id.
- Wyświetla identyfikator i nazwy obecne w sortowaniu guru_employees według
zapytanie:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Rozpowszechniaj przez
Rozpowszechnij klauzulę BY używaną w tabelach znajdujących się w gałęzi Hive. Hive używa kolumn w opcji Rozłóż według, aby rozdzielić wiersze między reduktorami. Wszystkie kolumny Rozłóż BY trafią do tego samego reduktora.
- Zapewnia to, że każdy z N reduktorów otrzyma nienakładające się na siebie zakresy kolumn
- Nie sortuje wyjścia każdego reduktora
Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy
- DISTRIBUTE BY Klauzula działająca na identyfikatorze tabeli „empoloyees_guru”.
- Wyjście pokazujące Id, Name. W back end, przejdzie do tego samego reduktora
zapytanie:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;