Въведение в HiveQL

HiveQL, обикновено известен като HQL, е подобен на SQL език за заявки за обработка на големи парчета данни от Hadoop среда. Първоначално разработен от Facebook около 2007 г., Hive по-късно се превръща в проект с отворен код Apache. Заявките на кошери със синтаксис, подобен на SQL, станаха популярни сред анализаторите на данни в днешно време. HiveQL, използващ HDFS за съхранение и MapReduce за обработка, помага за получаване на представа за потребители с големи данни с минимален опит в кодирането. Различни други разпределени двигатели за изчисления като Apache Tez и Apache Spark могат да се използват с HiveQL за по-бърза обработка на широкомащабни анализи на данни. Различните начини за използване на HiveQL са - CLI (интерфейс на командния ред), търговски продукти като Karmasphere, Cloudera с отворен код Hue и Qubole.

Работа на HiveQL

Hive осигурява SQL като диалект за манипулиране на данни, елиминирайки необходимостта да пишем ниско ниво на MapReduce задачи, за да извличаме данни (чрез Mapper) и да събираме крайни резултати (чрез модули за редуктор).

  • Изпълнение на запитване на кошера

Стъпки, участващи в изпълнението на заявка на Hive са:

  1. Интерфейс на кошера (чрез CLI или Web UI) изпраща заявката до Driver (който е JDBC, ODBC или Thrift Server), за да компилира, оптимизира и изпълни. Той проверява заявката чрез компилатор за синтаксис и план за изпълнение.
  2. Компилаторът изпраща заявка до Metastore и получава метаданни като отговор.
  3. Компилаторът съобщава плана за изпълнение обратно на драйвера, който допълнително го изпраща към двигателя за изпълнение.
  4. Двигателят за изпълнение взаимодейства с Job Tracker, който е Името на възела, за да свърши работата.
  5. Успоредно с това, механизмът за изпълнение също изпълнява операция с метаданни.
  6. Името възел получава работата, извършена от Task tracker или Data възли.
  7. Резултати, които се споделят с двигателя за изпълнение, които след това се показват на интерфейса чрез драйвера.
  • Оптимизация на заявки

Настройка на HiveQL за по-добра оптимизация на заявките. Използвайки командите по-долу, можем да изместим конфигурациите по подразбиране и да дадем възможност за по-бързо изпълнение на заявките.

1 . SET hive.execution.engine = tez

По подразбиране, двигателят за изпълнение е зададен като Mapreduce, но изрично можем да го зададем на tez (само за Hadoop 2) или Spark (за Hive 1.1. 0 нататък).

2 . SET hive.mapred.mode = ограничи

Това е за динамичен дял, който е полезен за зареждане на големи масиви данни. Статичният дял обаче е зададен по подразбиране, което се случва в режим "строг".

3 . SET hive.vectorized.execution = true

set hive.vectorized.execution.enabled = true

Векторизираното изпълнение на заявката позволява операция като - агрегати, филтри или присъединявания да се случва на партиди от 1024 реда, вместо в един ред наведнъж.

4 . SET hive.auto.convert.join = true

Докато се присъединявате към голям набор от данни с много малък набор от данни, присъединяването на карти е по-ефективно и може да бъде зададено с помощта на горната команда.

5 . SET hive.exec.parallel = true

Заданията MapReduce се изпълняват паралелно в Hadoop. Понякога, ако заявките не зависят една от друга, може да се благоприятства паралелно изпълнение, което води до по-добро управление на паметта.

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

Това дава възможност крайният изход да се съхранява в HDFS в компресиран формат.

7 . SET hive.exec.compress.output = true

Това дава възможност крайният изход да се съхранява в HDFS в компресиран формат.

Характеристики на HiveQL

  1. Като език на високо ниво, заявките на Hive имплицитно се преобразуват в работни места с намалена карта или сложни DAG (насочени ациклични графики). Използвайки ключовата дума „Обяснете“ преди заявката, можем да получим плана за заявки.
  2. По-бързо изпълнение на заявките чрез използване на метаданни за съхранение във формат RDMS и копиране на данни, което прави извличането лесно в случай на загуба.
  3. Индексирането на bitmap се извършва за ускоряване на заявките.
  4. Подобрява производителността, като позволява разделяне на данни.
  5. Hive може да обработва различни видове компресирани файлове, като по този начин спестява дисково пространство.
  6. За да манипулира низове, цели числа или дати, HiveQL поддържа разширяване на дефинираните от потребителя функции (UDF), за решаване на проблеми, които не се поддържат от вградени UDF.
  7. Той предлага набор от допълнителни API, за изграждане на персонализирана машина за заявки.
  8. Поддържат се различни файлови формати като Textfile, Sequencefile, ORC (Optimized Row Columnar), RCFile, Avro и Parquet. ORC файлов формат е най-подходящ за подобряване на ефективността на заявките, тъй като съхранява данни по най-оптимизирания начин, което води до по-бързо изпълнение на заявките.
  9. Това е ефикасен анализ на данни и ETL инструмент за големи набори от данни 10. Лесно се пишат заявки, тъй като е подобно на SQL. Командите DDL (език за дефиниране на данни) в кошера се използват за уточняване и промяна на структурата на базата данни или таблици в кошер. Тези команди са пускане, създаване, съкращаване, промяна, показване или описание.

Ограничения

  1. Заявките за кошери имат по-голяма латентност, тъй като Hadoop е ориентирана към партида система.
  2. Вложени или подзапитвания не се поддържат.
  3. Операцията за актуализиране, изтриване или вмъкване не може да бъде извършена на ниво запис.
  4. Обработката на данни в реално време или запитванията не се предлагат през Hive Scope на HQL.

С петабайта данни, вариращи от милиарди до трилиони записи, HiveQL има голям обхват за професионалисти с големи данни.

Обхват на HiveQL

По-долу са начините, по които обхватът на HiveQL се разширява и обслужва по-добре целта на анализиране на хумусни данни, генерирани от потребителите всеки ден.

Сигурност: Наред с обработката на големи данни, Hive осигурява сигурност на данните. Тази задача е сложна за разпределената система, тъй като са необходими няколко компонента за комуникация помежду си. Поддръжката за оторизация на Kerberos позволява удостоверяване между клиент и сървър.

Заключване: Традиционно Hive липсва заключване на редове, колони или заявки. Кошера може да използва Apache Zookeeper за заключване на подкрепа.

Управление на работния процес : Apache Oozie е планиращ работен процес за автоматизиране на различни HiveQL заявки, които да се изпълняват последователно или паралелно.

Визуализация: Тефтерът Zeppelin е уеб базирано тефтерче, което дава възможност за интерактивен анализ на данни. Той поддържа Hive and Spark за визуализация и сътрудничество на данни.

заключение

HiveQL се използва широко в организациите за решаване на сложни случаи на употреба. Имайки предвид характеристиките и ограниченията, предлагани от езика, езикът на заявките на кошерите се използва в телекомуникациите, здравеопазването, търговията на дребно, банковото дело и финансовите услуги и дори системата за оценка на климата на лабораторията за тестване на двигателя на НАСА. Лесно писане на SQL като заявки и команди акаунти за по-широко приемане. Нарастващата възможност за работа в тази област примамва по-свежи и професионалисти от различни сектори да придобият практически опит и знания за тази област.

Препоръчителни статии

Това е ръководство за HiveQL. Тук обсъждаме Въведение в HiveQL, оптимизиране на заявки и неговите ограничения и функции. Можете също да прегледате нашите свързани статии, за да научите повече -

  1. Какво представляват видовете данни на кошера?
  2. Алтернативи на кошера | Разберете функциите
  3. Най-важните компоненти на командите на кошера
  4. Топ 10 въпроса за интервю с кошера

Категория: