Вступ до HiveQL

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

Робота HiveQL

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

  • Виконання запиту вуликів

Етапи, що беруть участь у виконанні запиту вулика:

  1. Інтерфейс вулика (через CLI або веб-інтерфейс) надсилає запит драйверу (це JDBC, ODBC або ощадливий сервер) для складання, оптимізації та виконання. Він перевіряє запит через компілятор на предмет синтаксису та плану виконання.
  2. Компілятор відправляє запит до Metastore і отримує метадані у відповідь.
  3. Компілятор повідомляє план виконання назад драйверу, який надалі надсилає його до двигуна Execution.
  4. Двигун виконання взаємодіє з інструментом відстеження роботи, який є вузлом імен для виконання завдання.
  5. Паралельно, механізм виконання також виконує операцію з метаданими.
  6. Вузол імен виконує завдання трекером завдань або вузлами даних.
  7. Результати, якими надається механізм виконання, які потім відображаються в інтерфейсі через драйвер.
  • Оптимізація запитів

Налаштування HiveQL для кращої оптимізації запитів. Використовуючи команди, встановлені нижче, ми можемо замінити конфігурації за замовчуванням і включити швидше виконання запитів.

1 . SET hive.execution.engine = tez

За замовчуванням двигун виконання встановлений як Mapreduce, але ми можемо явно встановити його на tez (лише для Hadoop 2) або Spark (для вулика 1.1. 0 далі).

2 . SET hive.mapred.mode = обмежити

Це для динамічного розподілу, який корисний для завантаження великих наборів даних. Однак статичний розподіл встановлюється за замовчуванням, що відбувається в "суворому" режимі.

3 . SET hive.vectorized.execution = true

встановити hive.vectorized.execution.enabled = true

Векторизоване виконання запитів дозволяє виконувати такі операції, як –агрегати, фільтри або об’єднання, партіями з 1024 рядків замість одного рядка одночасно.

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

При з'єднанні великого набору даних з дуже невеликим набором даних, об'єднання карт є більш ефективним і їх можна встановити за допомогою вищевказаної команди.

5 . SET hive.exec.parallel = вірно

Завдання MapReduce паралельно виконуються в Hadoop. Іноді, якщо запити не залежать один від одного, може сприяти паралельне виконання, що веде до кращого управління пам'яттю.

6 . SET hive.exec.compress.output = вірно

Це дозволяє зберігати кінцевий вихід у форматі HDFS у стисненому форматі.

7 . SET hive.exec.compress.output = вірно

Це дозволяє зберігати кінцевий вихід у форматі HDFS у стисненому форматі.

Особливості HiveQL

  1. Будучи мовою високого рівня, запити Hive неявно перетворюються на завдання зі зменшенням карти або складні DAG (спрямовані ациклічні графіки). Використовуючи ключове слово "Пояснити" перед запитом, ми можемо отримати план запитів.
  2. Швидше виконання запитів за допомогою зберігання метаданих у форматі RDMS та копіювання даних, що робить пошук легким у випадку втрати.
  3. Індексація бітових карт проводиться для прискорення запитів.
  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. Обробка даних або запити в реальному часі не пропонується через область обліку HQL.

Маючи петабайти даних, починаючи з мільярдів до трильйонів записів, HiveQL має великий обсяг для великих професіоналів даних.

Область застосування HiveQL

Нижче наведено способи, в яких сфера застосування HiveQL розширюється та краще слугує меті аналізу гнучких даних, що генеруються користувачами щодня.

Безпека: Поряд з обробкою великих даних, Hive забезпечує безпеку даних. Це завдання є складним для розподіленої системи, оскільки для спілкування між собою потрібно кілька компонентів. Підтримка авторизації Kerberos дозволяє здійснювати аутентифікацію між клієнтом і сервером.

Блокування: Зазвичай у вулику немає блокування на рядки, стовпці чи запити. Вулик може використовувати Apache Zookeeper для блокування підтримки.

Управління робочим потоком: Apache Oozie - це планувальник робочих процесів для автоматизації різних запитів HiveQL для виконання послідовно або паралельно.

Візуалізація: ноутбук Zeppelin - це веб-ноутбук, який дозволяє інтерактивну аналітику даних. Він підтримує Hive and Spark для візуалізації даних та співпраці.

Висновок

HiveQL широко використовується в усіх організаціях для вирішення складних випадків використання. Маючи на увазі особливості та обмеження, пропоновані цією мовою, мова запиту вуликів використовується у телекомунікаціях, охороні здоров'я, роздрібній торгівлі, банківських та фінансових послугах і навіть у системі оцінки клімату лабораторії випробувань НАСА. Простота запису SQL, таких як запити та команди, облікові записи для більш широкого прийняття. Зростаюча можливість роботи в цій галузі приманює свіжих та професіоналів з різних секторів отримати практичний досвід та знання про цю галузь.

Рекомендовані статті

Це посібник з HiveQL. Тут ми обговорюємо Вступ до HiveQL, оптимізацію запитів та її обмеження та функції. Ви також можете ознайомитися з нашими відповідними статтями, щоб дізнатися більше -

  1. Що таке типи даних вулика?
  2. Альтернативи вулику | Дізнайтеся особливості
  3. Основні компоненти команд вулика
  4. Топ-10 запитань щодо інтерв'ю

Категорія: