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