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.

Tworzenie tabeli w ulu

Z powyższego zrzutu ekranu wynika,

  1. 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”.
  2. 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.

Zamów według zapytania

Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy

  1. 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.
  2. 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.

Grupuj według zapytania

Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy

  1. Jest to zapytanie wykonywane na tabeli „employees_guru” z klauzulą ​​GROUP BY z nazwą kolumny Dział zgodnie z zdefiniowaną nazwą GROUP BY.
  2. 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.

Sortuj według

Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy:

  1. 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.
  2. 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.

Cluster By

Z powyższego zrzutu ekranu wynikają następujące wnioski:

  1. To jest zapytanie, które wykonuje klauzulę CLUSTER BY na wartości pola Id. Tutaj zostanie wykonane sortowanie na wartościach Id.
  2. 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

Rozpowszechniaj przez

Na powyższym zrzucie ekranu możemy zaobserwować następujące rzeczy

  1. DISTRIBUTE BY Klauzula działająca na identyfikatorze tabeli „empoloyees_guru”.
  2. Wyjście pokazujące Id, Name. W back end, przejdzie do tego samego reduktora

zapytanie:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;