Wprowadzenie do HiveQL

HiveQL, powszechnie znany jako HQL, to SQL-owy język zapytań do przetwarzania dużych porcji danych ze środowiska Hadoop. Pierwotnie opracowany przez Facebooka około 2007 roku, Hive stał się później otwartym projektem Apache. Zapytania uli o składni podobnej do SQL stały się obecnie popularne wśród analityków danych. HiveQL używający HDFS do przechowywania i MapReduce do przetwarzania pomaga w uzyskiwaniu wglądu dla użytkowników dużych zbiorów danych przy minimalnym doświadczeniu w kodowaniu. Różne inne rozproszone silniki obliczeniowe, takie jak Apache Tez i Apache Spark, mogą być używane z HiveQL w celu szybszego przetwarzania analityki danych na dużą skalę. Różne sposoby korzystania z HiveQL to - CLI (interfejs wiersza poleceń), produkty komercyjne, takie jak Karmasphere, open source Cloudera Hue i Qubole.

Działanie HiveQL

Hive zapewnia dialekt podobny do SQL do manipulacji danymi, co eliminuje potrzebę pisania niskopoziomowych zadań MapReduce w celu pobierania danych (za pomocą Mappera) i agregowania wyników końcowych (za pomocą modułów reduktora).

  • Wykonywanie zapytania Hive

Kroki związane z wykonywaniem zapytania Hive to:

  1. Interfejs Hive (za pośrednictwem interfejsu CLI lub interfejsu internetowego) wysyła zapytanie do sterownika (którym jest JDBC, ODBC lub serwer Thrift) w celu skompilowania, optymalizacji i wykonania. Sprawdza zapytanie za pomocą kompilatora pod kątem składni i planu wykonania.
  2. Kompilator wysyła żądanie do Metastore i odbiera Metadane w odpowiedzi.
  3. Kompilator przekazuje plan wykonania z powrotem do sterownika, który następnie przesyła go do silnika wykonawczego.
  4. Mechanizm wykonawczy współdziała z modułem Job Tracker, który jest węzłem nazwy, aby wykonać zadanie.
  5. Równolegle silnik wykonawczy wykonuje również operację na metadanych.
  6. Węzeł nazw wykonuje zadanie przez moduł śledzenia zadań lub węzły danych.
  7. Wyniki, które są współużytkowane z silnikiem wykonywania, które następnie są wyświetlane w interfejsie za pośrednictwem sterownika.
  • Optymalizacja zapytań

Dostrajanie HiveQL dla lepszej optymalizacji zapytań. Korzystając z poniższych poleceń, możemy przesłonić domyślne konfiguracje i umożliwić szybsze wykonywanie zapytań.

1 . ZESTAW hive.execution.engine = tez

Domyślnie silnik wykonawczy jest ustawiony na Mapreduce, ale możemy jawnie ustawić go na tez (tylko dla Hadoop 2) lub Spark (dla Hive 1.1. 0 i późniejszych).

2) SET hive.mapred.mode = unstrict

Dotyczy dynamicznego partycjonowania, które jest pomocne przy ładowaniu dużych zestawów danych. Partycjonowanie statyczne jest jednak ustawione domyślnie, co dzieje się w trybie „ścisłym”.

3) ZESTAW hive.vectorized.execution = true

set hive.vectorized.execution.enabled = true

Wektoryzowane wykonywanie zapytań pozwala na wykonywanie operacji takich jak –agregaty, filtry lub łączenia w partiach 1024 wierszy zamiast pojedynczych wierszy.

4 ZESTAW hive.auto.convert.join = true

Łącząc duży zestaw danych z bardzo małym zestawem danych, połączenia mapy są bardziej wydajne i można je ustawić za pomocą powyższego polecenia.

5 ZESTAW hive.exec.parallel = true

Zadania MapReduce są wykonywane równolegle w Hadoop. Czasami, jeśli zapytania nie są od siebie zależne, można preferować wykonywanie równoległe, co prowadzi do lepszego zarządzania pamięcią.

6 . ZESTAW hive.exec.compress.output = true

Umożliwia to zapisanie końcowego wyniku w formacie HDFS w skompresowanym formacie.

7 ZESTAW hive.exec.compress.output = true

Umożliwia to zapisanie końcowego wyniku w formacie HDFS w skompresowanym formacie.

Funkcje HiveQL

  1. Będąc językiem wysokiego poziomu, zapytania Hive są domyślnie konwertowane na zadania zmniejszające mapę lub złożone DAG (ukierunkowane wykresy acykliczne). Używając słowa kluczowego „Wyjaśnij” przed zapytaniem, możemy uzyskać plan zapytania.
  2. Szybsze wykonywanie zapytań przy użyciu magazynu metadanych w formacie RDMS i replikacji danych, co ułatwia wyszukiwanie w przypadku utraty.
  3. Indeksowanie bitmap odbywa się w celu przyspieszenia zapytań.
  4. Zwiększa wydajność, umożliwiając partycjonowanie danych.
  5. Hive może przetwarzać różne typy skompresowanych plików, oszczędzając w ten sposób miejsce na dysku.
  6. Aby manipulować ciągami, liczbami całkowitymi lub datami, HiveQL obsługuje rozszerzanie funkcji zdefiniowanych przez użytkownika (UDF), aby rozwiązać problemy nieobsługiwane przez wbudowane UDF.
  7. Zapewnia szereg dodatkowych interfejsów API w celu zbudowania dostosowanego silnika zapytań.
  8. Obsługiwane są różne formaty plików, takie jak Textfile, Sequencefile, ORC (Optimized Row Columnar), RCFile, Avro i Parquet. Format pliku ORC jest najbardziej odpowiedni do poprawy wydajności zapytań, ponieważ przechowuje dane w najbardziej zoptymalizowany sposób, co prowadzi do szybszego wykonywania zapytań.
  9. Jest to wydajne narzędzie do analizy danych i ETL dla dużych zestawów danych 10. Łatwe pisanie zapytań, ponieważ jest podobne do SQL. Komendy DDL (język definicji danych) w gałęzi służą do określania i zmiany struktury bazy danych lub tabel w gałęzi. Te polecenia to upuszczanie, tworzenie, obcinanie, zmienianie, pokazywanie lub opisywanie.

Ograniczenia

  1. Zapytania ula mają większe opóźnienia, ponieważ Hadoop jest systemem zorientowanym wsadowo.
  2. Zagnieżdżone lub zapytania podrzędne nie są obsługiwane.
  3. Operacji aktualizacji, usuwania lub wstawiania nie można wykonać na poziomie rekordu.
  4. Przetwarzanie danych w czasie rzeczywistym lub zapytania nie są oferowane przez Hive Scope of HQL.

Dzięki petabajtom danych, od miliardów do trylionów rekordów, HiveQL ma duży zakres dla profesjonalistów zajmujących się dużymi danymi.

Zakres HiveQL

Poniżej znajdują się sposoby, w jakie zakres HiveQL poszerza się i lepiej służy analizowaniu humungu danych generowanych przez użytkowników każdego dnia.

Bezpieczeństwo: Oprócz przetwarzania dużych danych, Hive zapewnia bezpieczeństwo danych. To zadanie jest złożone dla systemu rozproszonego, ponieważ do komunikacji między sobą potrzeba wielu komponentów. Obsługa autoryzacji Kerberos umożliwia uwierzytelnianie między klientem a serwerem.

Blokowanie: tradycyjnie w gałęzi brakuje blokowania wierszy, kolumn lub zapytań. Rój może wykorzystać Apache Zookeeper do zablokowania wsparcia.

Zarządzanie przepływem pracy : Apache Oozie to planista przepływu pracy do automatyzacji różnych zapytań HiveQL do wykonywania sekwencyjnego lub równoległego.

Wizualizacja: Notatnik Zeppelin jest notatnikiem internetowym, który umożliwia interaktywną analizę danych. Obsługuje Hive i Spark do wizualizacji danych i współpracy.

Wniosek

HiveQL jest szeroko stosowany w różnych organizacjach do rozwiązywania złożonych przypadków użycia. Mając na uwadze funkcje i ograniczenia oferowane przez ten język, język zapytań Hive jest używany w telekomunikacji, służbie zdrowia, handlu detalicznym, bankowości i usługach finansowych, a nawet w systemie oceny klimatu NASA Test Propulsion Laboratory. Łatwość pisania zapytań SQL i kont dla szerszej akceptacji. Rosnąca szansa na pracę w tej dziedzinie wabi świeższych i profesjonalistów z różnych sektorów, aby zdobyć praktyczne doświadczenie i wiedzę w tej dziedzinie.

Polecane artykuły

To jest przewodnik po HiveQL. Tutaj omawiamy wprowadzenie do HiveQL, optymalizację zapytań oraz jego ograniczenia i funkcje. Możesz również przejrzeć nasze powiązane artykuły, aby dowiedzieć się więcej -

  1. Co to są typy danych gałęzi?
  2. Alternatywy dla ula | Sprawdź funkcje
  3. Najważniejsze elementy poleceń Hive
  4. 10 najważniejszych pytań do wywiadu w ulu

Kategoria: