Zapytania Hive: Kolejność według, Grupowanie według, Dystrybucja według, Klaster według przykładów

Spisie treści:

Anonim

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

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

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

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

  1. Jest to zapytanie, które jest wykonywane na tabeli „workers_guru” z klauzulą ​​GROUP BY z działem zdefiniowanym jako nazwa kolumny GROUP BY.
  2. 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:

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

  1. To zapytanie wykonuje klauzulę CLUSTER BY na wartości pola Id. Tutaj otrzyma sortowanie według wartości Id.
  2. 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

  1. DYSTRYBUCJA PRZEZ Klauzulę wykonującą na Id tabeli „empoloyees_guru”
  2. 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;