Въведение в 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 са:
- Интерфейс на кошера (чрез CLI или Web UI) изпраща заявката до Driver (който е JDBC, ODBC или Thrift Server), за да компилира, оптимизира и изпълни. Той проверява заявката чрез компилатор за синтаксис и план за изпълнение.
- Компилаторът изпраща заявка до Metastore и получава метаданни като отговор.
- Компилаторът съобщава плана за изпълнение обратно на драйвера, който допълнително го изпраща към двигателя за изпълнение.
- Двигателят за изпълнение взаимодейства с Job Tracker, който е Името на възела, за да свърши работата.
- Успоредно с това, механизмът за изпълнение също изпълнява операция с метаданни.
- Името възел получава работата, извършена от Task tracker или Data възли.
- Резултати, които се споделят с двигателя за изпълнение, които след това се показват на интерфейса чрез драйвера.
-
Оптимизация на заявки
Настройка на 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
- Като език на високо ниво, заявките на Hive имплицитно се преобразуват в работни места с намалена карта или сложни DAG (насочени ациклични графики). Използвайки ключовата дума „Обяснете“ преди заявката, можем да получим плана за заявки.
- По-бързо изпълнение на заявките чрез използване на метаданни за съхранение във формат RDMS и копиране на данни, което прави извличането лесно в случай на загуба.
- Индексирането на bitmap се извършва за ускоряване на заявките.
- Подобрява производителността, като позволява разделяне на данни.
- Hive може да обработва различни видове компресирани файлове, като по този начин спестява дисково пространство.
- За да манипулира низове, цели числа или дати, HiveQL поддържа разширяване на дефинираните от потребителя функции (UDF), за решаване на проблеми, които не се поддържат от вградени UDF.
- Той предлага набор от допълнителни API, за изграждане на персонализирана машина за заявки.
- Поддържат се различни файлови формати като Textfile, Sequencefile, ORC (Optimized Row Columnar), RCFile, Avro и Parquet. ORC файлов формат е най-подходящ за подобряване на ефективността на заявките, тъй като съхранява данни по най-оптимизирания начин, което води до по-бързо изпълнение на заявките.
- Това е ефикасен анализ на данни и ETL инструмент за големи набори от данни 10. Лесно се пишат заявки, тъй като е подобно на SQL. Командите DDL (език за дефиниране на данни) в кошера се използват за уточняване и промяна на структурата на базата данни или таблици в кошер. Тези команди са пускане, създаване, съкращаване, промяна, показване или описание.
Ограничения
- Заявките за кошери имат по-голяма латентност, тъй като Hadoop е ориентирана към партида система.
- Вложени или подзапитвания не се поддържат.
- Операцията за актуализиране, изтриване или вмъкване не може да бъде извършена на ниво запис.
- Обработката на данни в реално време или запитванията не се предлагат през Hive Scope на HQL.
С петабайта данни, вариращи от милиарди до трилиони записи, HiveQL има голям обхват за професионалисти с големи данни.
Обхват на HiveQL
По-долу са начините, по които обхватът на HiveQL се разширява и обслужва по-добре целта на анализиране на хумусни данни, генерирани от потребителите всеки ден.
Сигурност: Наред с обработката на големи данни, Hive осигурява сигурност на данните. Тази задача е сложна за разпределената система, тъй като са необходими няколко компонента за комуникация помежду си. Поддръжката за оторизация на Kerberos позволява удостоверяване между клиент и сървър.
Заключване: Традиционно Hive липсва заключване на редове, колони или заявки. Кошера може да използва Apache Zookeeper за заключване на подкрепа.
Управление на работния процес : Apache Oozie е планиращ работен процес за автоматизиране на различни HiveQL заявки, които да се изпълняват последователно или паралелно.
Визуализация: Тефтерът Zeppelin е уеб базирано тефтерче, което дава възможност за интерактивен анализ на данни. Той поддържа Hive and Spark за визуализация и сътрудничество на данни.
заключение
HiveQL се използва широко в организациите за решаване на сложни случаи на употреба. Имайки предвид характеристиките и ограниченията, предлагани от езика, езикът на заявките на кошерите се използва в телекомуникациите, здравеопазването, търговията на дребно, банковото дело и финансовите услуги и дори системата за оценка на климата на лабораторията за тестване на двигателя на НАСА. Лесно писане на SQL като заявки и команди акаунти за по-широко приемане. Нарастващата възможност за работа в тази област примамва по-свежи и професионалисти от различни сектори да придобият практически опит и знания за тази област.
Препоръчителни статии
Това е ръководство за HiveQL. Тук обсъждаме Въведение в HiveQL, оптимизиране на заявки и неговите ограничения и функции. Можете също да прегледате нашите свързани статии, за да научите повече -
- Какво представляват видовете данни на кошера?
- Алтернативи на кошера | Разберете функциите
- Най-важните компоненти на командите на кошера
- Топ 10 въпроса за интервю с кошера