Введение в HiveQL

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

Работа HiveQL

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

  • Выполнение запроса Hive

Шаги, связанные с выполнением запроса Hive:

  1. Интерфейс Hive (через CLI или веб-интерфейс) отправляет запрос в Driver (который является JDBC, ODBC или Thrift Server) для компиляции, оптимизации и выполнения. Он проверяет запрос через компилятор на синтаксис и план выполнения.
  2. Компилятор отправляет запрос в Metastore и получает метаданные в ответ.
  3. Компилятор сообщает план выполнения обратно драйверу, который затем отправляет его в механизм выполнения.
  4. Механизм выполнения взаимодействует с Job Tracker, который является узлом имени, чтобы выполнить работу.
  5. Параллельно механизм выполнения также выполняет операцию метаданных.
  6. Имя узла получает работу, выполненную с помощью трекера задач или узлов данных.
  7. Результаты, которые передаются механизму выполнения, которые затем отображаются в интерфейсе через драйвер.
  • Оптимизация запросов

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

1 SET hive.execution.engine = tez

По умолчанию механизм выполнения установлен как Mapreduce, но мы можем явно установить для него tez (только для Hadoop 2) или Spark (для Hive 1.1. 0 и далее).

2 SET hive.mapred.mode = unstrict

Это для динамического разделения, которое полезно для загрузки больших наборов данных. Однако статическое разбиение по умолчанию установлено, что происходит в «строгом» режиме.

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. Индексирование растровых изображений выполняется для ускорения запросов.
  4. Повышает производительность, разрешая разделение данных.
  5. Hive может обрабатывать различные типы сжатых файлов, тем самым экономя место на диске.
  6. Чтобы манипулировать строками, целыми числами или датами, HiveQL поддерживает расширение пользовательских функций (UDF) для решения проблем, не поддерживаемых встроенными UDF.
  7. Он предоставляет ряд дополнительных API для создания настраиваемого механизма запросов.
  8. Поддерживаются различные форматы файлов, такие как Textfile, Sequencefile, ORC (Оптимизированный столбец строк), RCFile, Avro и Parquet. Формат файла ORC наиболее подходит для повышения производительности запросов, поскольку он хранит данные наиболее оптимизированным способом, что приводит к более быстрому выполнению запросов.
  9. Это эффективный инструмент анализа данных и ETL для больших наборов данных 10. Легко писать запросы, так как он похож на SQL. Команды DDL (язык определения данных) в кусте используются для указания и изменения структуры базы данных или таблиц в кусте. Эти команды - удаление, создание, усечение, изменение, показ или описание.

Ограничения

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

Имея петабайты данных, от миллиардов до триллионов записей, HiveQL предлагает широкие возможности для профессионалов в области больших данных.

Область применения HiveQL

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

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

Блокировка. Традиционно в Hive отсутствует блокировка строк, столбцов или запросов. Hive может использовать Apache Zookeeper для поддержки блокировки.

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

Визуализация. Блокнот Zeppelin представляет собой блокнот на основе веб-интерфейса, который обеспечивает интерактивную аналитику данных. Он поддерживает Hive и Spark для визуализации данных и совместной работы.

Вывод

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

Рекомендуемые статьи

Это руководство по HiveQL. Здесь мы обсуждаем Введение в HiveQL, Оптимизация запросов, его ограничения и особенности. Вы также можете просмотреть наши соответствующие статьи, чтобы узнать больше -

  1. Что такое типы данных Hive?
  2. Улей Альтернативы | Узнайте особенности
  3. Основные компоненты команд Hive
  4. Лучшие 10 вопросов интервью улей