Схема магических данных Королевства

HadoopHadoopBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В очаровательном мире Королевского Академии Волшебства, где искусство магии переплетается с поиском знаний, молодой королевский гвардейский солдат по имени Артор находит себя в отчаянной ситуации. В течение веков библиотека Академии, хранящая в себе бесценные знания и заклинания в виде древних томов и свитков, стала все более беспорядочной. Старший Волшебник, Мёрлин, понимает, что необходимо создать мощную и эффективную систему управления этой огромной информацией.

Цель Артора — разработать и внедрить комплексную схему для данных Академии, чтобы знания, хранящиеся в древних записях, были легко доступны и хорошо структурированы. Используя силу Hadoop и его компонентов, в частности Hive, он создаст надежное и масштабируемое решение по управлению данными, которое поможет учёным и волшебникам Академии в поиске знаний и мастерства в магии.

Настройка среды Hadoop

В этом шаге мы подготовим среду Hadoop для нашего проектирования схемы. Сначала перейдём в пользователя hadoop:

su - hadoop

После входа под пользователем hadoop перейдём в директорию /home/hadoop:

cd /home/hadoop

Теперь создадим новую директорию academy_data, чтобы хранить наши файлы с данными и схемами:

mkdir academy_data

Далее необходимо убедиться, что службы Hadoop запущены. Вы можете проверить статус служб с помощью следующей команды:

hdfs dfsadmin -report

Если службы не запущены, вы можете запустить их с помощью:

start-dfs.sh
start-yarn.sh

После настройки среды Hadoop мы готовы приступить к проектированию схемы.

Проектирование схемы

В этом шаге мы разработаем схему для данных Академии. Начнём с анализа имеющихся у нас данных. Коллекция Академии состоит из трёх основных категорий: книг, свитков и артефактов.

Создайте новый файл под названием academy_schema.hql в директории academy_data:

cd academy_data
touch academy_schema.hql

Откройте файл в предпочитаемом текстовом редакторе и добавьте следующее определение схемы:

-- academy_schema.hql

-- Создаём базу данных для данных Академии
CREATE DATABASE IF NOT EXISTS academy;

-- Переключаемся на базу данных academy
USE academy;

-- Таблица для книг
CREATE TABLE IF NOT EXISTS books (
    book_id INT,
    title STRING,
    author STRING,
    publication_year INT,
    category STRING
) COMMENT 'Таблица для хранения информации о книгах'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- Таблица для свитков
CREATE TABLE IF NOT EXISTS scrolls (
    scroll_id INT,
    title STRING,
    author STRING,
    creation_year INT,
    subject STRING
) COMMENT 'Таблица для хранения информации о свитках'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- Таблица для артефактов
CREATE TABLE IF NOT EXISTS artifacts (
    artifact_id INT,
    name STRING,
    description STRING,
    origin STRING,
    age INT
) COMMENT 'Таблица для хранения информации об артефактах'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

В этой схеме мы определили три таблицы: books, scrolls и artifacts. Каждая таблица имеет столбцы, соответствующие respective категории, например, title, author, publication_year для книг, а subject, creation_year для свитков.

Мы также указали предложения ROW FORMAT и STORED AS, чтобы убедиться, что данные хранятся в текстовых файлах с полями, разделёнными запятыми.

Сохраните файл и выйдите из текстового редактора.

Реализация схемы

Теперь, когда мы разработали схему, настало время реализовать её в Hive. Сначала запустим сервер Hive:

hive

После запуска сервера Hive мы можем выполнить скрипт определения схемы:

SOURCE /home/hadoop/academy_data/academy_schema.hql;

Эта команда создаст базу данных academy и таблицы books, scrolls и artifacts на основе схемы, которую мы определили ранее.

EXIT;

Далее заполним таблицы некоторыми примерами данных. Создадим новый файл под названием academy_data.txt в директории academy_data:

touch academy_data.txt

Откройте файл в текстовом редакторе и добавьте следующие данные:

1,The Sorcerer's Stone,J.K. Rowling,1997,Fantasy
2,Scroll of Levitation,Merlinious the Wise,1023,Charms
3,Ancient Wand,A powerful wand crafted by the Elven Wandmakers,Elven Realm,2500
4,Fantastic Beasts and Where to Find Them,Newt Scamander,2001,Bestiary
5,Scroll of Healing,Gwendolyn the Healer,1157,Healing
6,Enchanted Mirror,A mirror that reveals one's true self,Avalon,5000

Сохраните файл и выйдите из текстового редактора.

Теперь загрузим данные в соответствующие таблицы:

hive
USE academy;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE books;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE scrolls;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE artifacts;

Эти команды загрузят данные из файла academy_data.txt в соответствующие таблицы.

Наконец, проверим, были ли данные загружены правильно:

SELECT * FROM books;
SELECT * FROM scrolls;
SELECT * FROM artifacts;

Вы должны увидеть соответствующие данные, отображаемые для каждой таблицы.

Запросы к данным

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

Получить все книги, опубликованные в 2001 году:

SELECT * FROM books WHERE publication_year = 2001;

Получить все свитки, связанные с предметом "Чары":

SELECT * FROM scrolls WHERE subject = 'Charms';

Получить все артефакты, старые более 1000 лет:

SELECT * FROM artifacts WHERE age > 1000;

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

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

Резюме

В этом практическом занятии мы изучили процесс проектирования и реализации схемы для данных Королевской Академии Волшебства с использованием компонента Hive Hadoop. Начали с настройки среды Hadoop и создания необходимых директорий. Затем разработали схему для организации коллекции Академии книг, свитков и артефактов в отдельные таблицы.

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

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

Кроме того, мы приобрели практический опыт работы с Hive, мощным компонентом хранилища данных Hadoop, и его способностями к запросам, подобным SQL. Этот опыт будет бесценен при дальнейшей работе с большими данными и изучении более продвинутых методов анализа и обработки данных.