Руководство для начинающих по кодированию в Hive & SQL

В этой статье основное внимание уделяется Hive, его функциям, вариантам использования и запросам Hive. Поскольку многие запросы DML и DDL очень похожи на SQL, они могут выступать в качестве основы или строительного блока для всех, кто плохо знаком с SQL.

Apache Hive часто называют инфраструктурой хранилища данных, построенной на основе Apache Hadoop. Первоначально разработанный Facebook для ежедневных запросов к входящим ~ 20 ТБ данных, в настоящее время программисты используют его для специальных запросов и анализа больших наборов данных, хранящихся в файловых системах, таких как HDFS (Hadoop Distributed Framework System), без необходимости знать особенности карты. -уменьшать. Лучшая часть Hive заключается в том, что запросы неявно преобразуются в эффективную цепочку заданий сокращения карты с помощью механизма Hive.

Особенности Hive:

  • Поддерживает различные типы хранилищ, такие как простой текст, CSV, Apache Hbase и другие.
  • Моделирование данных, такое как создание баз данных, таблиц и т. Д.
  • Легко кодировать; Использует похожий на SQL язык запросов под названием HiveQL.
  • Функции ETL, такие как извлечение, преобразование и загрузка данных в таблицы вместе с объединениями, секциями и т. Д.
  • Содержит встроенные определяемые пользователем функции (UDF) для управления датами, строками и другими инструментами интеллектуального анализа данных.
  • Неструктурированные данные отображаются в виде таблиц независимо от макета.
  • Возможности подключаемого модуля для настраиваемого сопоставителя, редуктора и UDF
  • Расширенные запросы в Hadoop

Примеры использования Hive:

  • Анализ текста - неструктурированные данные с удобной структурой, наложенные и проанализированные с помощью map-reduce.
  • Индексирование документов - присвоение тегов нескольким документам для упрощения восстановления.
  • Бизнес-запросы. Запросы к большим объемам исторических данных для получения полезной информации, например история транзакций, история платежей, база данных клиентов и т. д.
  • Обработка журналов - обработка различных типов файлов журналов, таких как журналы вызовов, веб-журналы, журналы компьютеров и т. д.

Кодирование в Hive

Мы будем использовать таблицу под названием «транзакция», чтобы узнать, как запрашивать данные в Hive. Таблица транзакций содержит атрибуты id, item и sales.

Вот некоторые из лучших практик программирования для любого языка программирования.



Команды DDL в Hive

DDL - это краткое название языка определения данных, который имеет дело со схемами и описаниями базы данных, а также с тем, как данные должны находиться в базе данных. Вот некоторые общие примеры:

Создать таблицу

  • Создание таблицы - транзакция CREATE TABLE (id INT, элемент STRING, sales FLOAT);
  • Сохранение таблицы в определенном месте - транзакция CREATE TABLE (id INT, item STRING, sales FLOAT) ФОРМАТ. СТРОКИ РАЗДЕЛЕННЫЕ ПОЛЯ, ЗАКОНЧЕННЫЕ «\ 001», СОХРАНЕННЫМ КАК МЕСТОПОЛОЖЕНИЕ ТЕКСТФАЙЛА ‹путь HDFS›;
  • Разделение таблицы - транзакция CREATE TABLE (идентификатор INT, элемент STRING, продажи FLOAT) РАЗДЕЛЕНА ПО (id INT)

Отбросить таблицу

  • Транзакция DROP TABLE;

Изменить таблицу

  • ИЗМЕНИТЬ ТАБЛИЦУ транзакции ПЕРЕИМЕНОВАТЬ В transaction_front_of_stores;
  • Для добавления столбца - транзакция ALTER TABLE ADD COLUMNS (имя_клиента STRING);

Показать таблицу

  • ПОКАЗАТЬ ТАБЛИЦЫ;

Описать таблицу

  • ОПИСАТЬ транзакцию;
  • ОПИСАТЬ РАСШИРЕННУЮ транзакцию;

Команды DML в HIVE

DML - это краткое название языка манипулирования данными, который занимается манипулированием данными и включает наиболее часто используемые операторы SQL, такие как SELECT, INSERT, UPDATE, DELETE и т. Д. Он в основном используется для хранения, изменения, извлекать, удалять и обновлять данные в базе данных.

Загрузка данных

  • Загрузка данных из внешнего файла - ЗАГРУЗИТЬ ДАННЫЕ ЛОКАЛЬНЫЙ INPATH «‹file_path›» [ПЕРЕЗАПИСАТЬ] В ТАБЛИЦУ ‹имя таблицы›;
  • ЗАГРУЗИТЬ ДАННЫЕ ЛОКАЛЬНЫЙ INPATH «/documents/datasets/transcation.csv» [ПЕРЕЗАПИСАТЬ] В транзакцию ТАБЛИЦА;
  • Запись набора данных из отдельной таблицы - INSERT OVERWRITE TABLE транзакция SELECT id, item, date, volume FROM transaction_updated;

Выбрать заявление

Оператор select используется для выборки данных из таблицы базы данных. В основном используется для просмотра записей, выбора необходимых элементов поля, получения отдельных значений и отображения результатов любого фильтра, ограничения или группы по операции.

Чтобы получить все записи из таблицы транзакций:

ВЫБРАТЬ * ИЗ транзакции;

Чтобы получить отдельные идентификаторы транзакций из таблицы транзакций:

ВЫБЕРИТЕ DISTINCT id из транзакции;

Заявление о пределе

Используется вместе с оператором Select для ограничения количества строк, которые кодировщик хочет просмотреть. Любая база данных транзакций содержит большой объем данных, что означает, что выбор каждой строки приведет к увеличению времени обработки.

ВЫБРАТЬ * ИЗ ЛИМИТА транзакции 10;

Заявление о фильтре

ВЫБРАТЬ * ИЗ транзакции ГДЕ продажи ›100;

Группировать по заявлениям

Операторы Group by используются для обобщения данных на разных уровнях. Подумайте о сценарии, в котором мы хотим рассчитать общий объем продаж по товарам.

ВЫБЕРИТЕ товар, СУММ (продажи) как продажу ИЗ транзакции ГРУППА ПО номенклатуре;

что, если мы хотим отфильтровать все товары, по которым было продано не менее 1000.

ВЫБЕРИТЕ товар, СУММА (продажи) как продажа ИЗ транзакции ГРУППА ПО товарам, имеющим продажу ›1000;

Присоединяется к улью

Для объединения и извлечения записей из нескольких таблиц мы используем Hive Join. В настоящее время Hive поддерживает внутренние, внешние, левые и правые соединения для двух или более таблиц. Синтаксис аналогичен тому, что мы используем в SQL. Прежде чем мы рассмотрим синтаксис, давайте разберемся, как работают разные объединения.

ВЫБЕРИТЕ A. * ИЗ транзакции A {LEFT | RIGHT | FULL} ПРИСОЕДИНЯТЬСЯ к транзакции B, ON (A.ID = B.ID);

Примечания:

  • Hive не поддерживает подзапросы IN / EXISTS
  • Hive не поддерживает условия присоединения, которые не содержат условий равенства.
  • Можно объединить несколько таблиц, но организовать таблицы так, чтобы самая большая таблица появлялась последней в последовательности.
  • Hive преобразует объединения нескольких таблиц в одно задание сопоставления / сокращения, если для каждой таблицы в предложениях объединения используется один и тот же столбец.

Оптимизация запросов в Hive

Вот 5 практических правил, которые вы должны знать, чтобы оптимизировать запросы в улье.

  1. Группировка, функции агрегирования и объединения по умолчанию выполняются в редукторе, тогда как операции фильтрации выполняются в картографе.
  2. Используйте параметр hive.map.aggr = true, чтобы выполнить агрегирование первого уровня непосредственно в задаче карты.
  3. Установите количество преобразователей / редукторов в зависимости от типа выполняемой задачи. Для условий фильтрации используйте set mapred.mapper.tasks = X; Для операций агрегирования: установите mapred.reduce.tasks = Y;
  4. В соединениях последняя таблица в последовательности передается через редукторы, тогда как остальные буферизируются. Организуйте таблицы так, чтобы самая большая таблица появлялась последней в последовательности
  5. STREAM TABLE и MAP JOINS могут использоваться для ускорения присоединения к задачам

Хотите узнать больше о визуализации в Python?





Об авторе: специалист по продвинутой аналитике и консультант по менеджменту, помогающий компаниям находить решения разнообразных проблем с помощью сочетания бизнеса, технологий и математики на основе данных организации. Энтузиаст науки о данных, здесь, чтобы делиться, учиться и вносить свой вклад; Вы можете связаться со мной в Связанном и Твиттере;