В этой статье мы поговорим про структуру системы управления базами данных (СУБД) Apache Hive. Также рассмотрим, какие базовые компоненты входят в структуру известной SQL-подобной СУБД, входящей в экосистему Hadoop. Читайте далее про основные компоненты структуры Apache Hive, которые делают эту СУБД весьма удобным и мощным средством хранения и обработки больших данных.
Основные компоненты СУБД Apache Hive
Прежде всего отметим, что Хайв — это не просто СУБД, а целая платформа экосистемы Hadoop для хранения и обработки больших данных в распределенной среде, которая позволяет проектировать структуры Big Data (таблицы, партиции, бакеты) с помощью SQL-подобного языка, называемого HiveQL (HQL, Hive Query Language). В структуру Хайв входят следующие базовые элементы:
- база данных (database);
- таблица (классическая и внешняя).
Каждый из вышеперечисленных компонентов мы подробнее рассмотрим далее.
База данных
База данных (database) в Хайв — это пространство имен, содержащее различные отношения (таблицы). База данных имеет уникальное имя и размер. База данных в Hive представляет собой аналог базы данных в реляционных СУБД (например, Oracle, MySQL, MSSQL Server), где все таблицы (отношения) связаны между собой и ссылаются друг на друга. Для того, чтобы приступить к работе с данными и созданию таблиц, необходимо для начала создать базу данных, которая будет хранить все созданные таблицы с данными. Следующий код на языке SQL отвечает за создание базы данных:
CREATE DATABASE userdb
Для переключения на соответствующую базу данных используется ключевое слово USE:
USE userdb
После переключения на необходимую базу данных все запросы по созданию таблиц будут создавать и сохранять эти таблицы в эту базу данных [1].
Таблица
Таблица — это структура данных, которая хранит данные в базе данных в виде строк и столбцов в структурированном (упорядоченном) виде. Таблица в Хайв представляет собой аналог таблицы в реляционной базе данных, где доступ к данным происходит по индексу, который ускоряет работу по поиску данных. Основное отличие hive-таблиц от таблиц реляционных СУБД состоит в том, что после создания они хранятся в виде обычных файлов на файловой системе HDFS (Hadoop Distributed File System). В Hive таблицы делятся на 2 вида:
- классические таблицы;
- внешние таблицы.
Классические таблицы — это таблицы, в которые данные добавляются при помощи специального HQL-запроса после создания таблицы. Следующий код на диалекте HQL отвечает за создание классической таблицы:
CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String, destination String) COMMENT 'Employee details' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE
После выполнения этого запроса в базе данных появится пустая таблица. Для того, чтобы заполнить ее данными, необходимо выполнить специальный HQL-запрос:
LOAD DATA INPATH '/user/root/sample.txt' OVERWRITE INTO TABLE employee;
Внешние таблицы — это таблицы, в которые данные загружаются из внешних источников (csv-файлов, txt-файлов и т.д.) во время создания таблицы. Для создания внешней таблицы используется ключевое слово EXTERNAL. Следующий код на диалекте HQL отвечает за создание внешней таблицы и заполнение ее данными [2]:
CREATE EXTERNAL TABLE IF NOT EXISTS employee_external ( eid int, name String, salary String, destination String) COMMENT 'Employee details' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/root/external_files/'
Таким образом, структура Apache Hive делает это средство весьма удобной и надежной платформой для хранения и обработки Big Data. Именно поэтому Hive является неотъемлемой частью экосистемы Hadoop, являющейся универсальным решением для организации обработки Big Data.
Больше подробностей про применение Apache Hive в проектах анализа больших данных вы узнаете на практических курсах по Хайв в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:
IMPA: CLOUDERA IMPALA DATA ANALYTICS
ADQM: ЭКСПЛУАТАЦИЯ ARENADATA QUICKMARTS
ADBR: Arenadata DB для разработчиков
ADB: Эксплуатация Arenadata DB
HBASE: Администрирование кластера HBase
HIVE: Hadoop SQL администратор Hive
NoSQL: Интеграция Hadoop и NoSQL
Источники