Руководство для начинающих по кодированию в 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 практических правил, которые вы должны знать, чтобы оптимизировать запросы в улье.
- Группировка, функции агрегирования и объединения по умолчанию выполняются в редукторе, тогда как операции фильтрации выполняются в картографе.
- Используйте параметр hive.map.aggr = true, чтобы выполнить агрегирование первого уровня непосредственно в задаче карты.
- Установите количество преобразователей / редукторов в зависимости от типа выполняемой задачи. Для условий фильтрации используйте set mapred.mapper.tasks = X; Для операций агрегирования: установите mapred.reduce.tasks = Y;
- В соединениях последняя таблица в последовательности передается через редукторы, тогда как остальные буферизируются. Организуйте таблицы так, чтобы самая большая таблица появлялась последней в последовательности
- STREAM TABLE и MAP JOINS могут использоваться для ускорения присоединения к задачам
Хотите узнать больше о визуализации в Python?
Об авторе: специалист по продвинутой аналитике и консультант по менеджменту, помогающий компаниям находить решения разнообразных проблем с помощью сочетания бизнеса, технологий и математики на основе данных организации. Энтузиаст науки о данных, здесь, чтобы делиться, учиться и вносить свой вклад; Вы можете связаться со мной в Связанном и Твиттере;