Введение
В очаровательном мире Королевского Академии Маггии команда опытных гемологов посвятилась разгадке загадок мистических камней, которые питают волшебный мир. Среди них была выдающаяся исследовательница Ария, чья неиссякающая любознательность и острый ум сделали ее силой, с которой нужно иметь дело.
Недавно академия приобрела огромный архив данных о свойствах и применениях этих камней, богатство знаний, которое обещает открыть новые пути волшебного инновационного развития. Однако огромный объем информации представлял устрашающую задачу, требующую помощи мощных аналитических инструментов.
Не сдаваться, Ария обратилась к почитаемой экосистеме Hadoop, понимая ее потенциал для преодоления необъятства данных. Ее цель состояла из двух аспектов: углубиться в сложности поведения камней и выявить скрытые закономерности, которые могут революционизировать способы применения магии.
Изучение датасета с gema
На этом этапе мы познакомимся с датасетом с gemaми и его структурой,奠定基础 для последующего анализа.
Во - первых, убедитесь, что вы вошли под пользователем hadoop, выполнив следующую команду в терминале:
su - hadoop
Теперь давайте начнем с создания примера. Скопируйте следующую командную строку в терминал, чтобы создать наш примерный файл.
mkdir -p hadoop/gemstone_data
cd hadoop/gemstone_data
echo "gem_id,gem_name,color,hardness,density,refractive_index" > gem_properties.csv
echo "1,Ruby ,Red ,9.0,4.0,1.77" >> gem_properties.csv
echo "2,Emerald,Green ,8.0,3.1,1.58" >> gem_properties.csv
echo "3,Sapphire,Blue ,9.0,4.0,1.76" >> gem_properties.csv
echo "4,Diamond,Colorless,10.0,3.5,2.42" >> gem_properties.csv
echo "5,Amethyst,Purple ,7.0,2.6,1.54" >> gem_properties.csv
echo "6,Topaz ,Yellow ,8.0,3.5,1.63" >> gem_properties.csv
echo "7,Pearl ,White ,2.5,2.7,1.53" >> gem_properties.csv
echo "8,Agate ,Multi ,7.0,2.6,1.53" >> gem_properties.csv
echo "9,Rose ,Pink ,7.0,2.7,1.54" >> gem_properties.csv
echo "10,CatsEye,Green ,6.5,3.2,1.54" >> gem_properties.csv
echo "gem_id,application" > gem_applications.csv
echo "1,Fire Magic " >> gem_applications.csv
echo "2,Earth Magic " >> gem_applications.csv
echo "3,Water Magic " >> gem_applications.csv
echo "4,Enhancement Magic" >> gem_applications.csv
echo "5,Psychic Magic " >> gem_applications.csv
echo "6,Lightning Magic " >> gem_applications.csv
echo "7,Illusion Magic " >> gem_applications.csv
echo "8,Strength Magic " >> gem_applications.csv
echo "9,Love Magic " >> gem_applications.csv
echo "10,Stealth Magic " >> gem_applications.csv
Теперь мы уже в директории gemstone_data, давайте потратьте несколько минут на просмотр содержимого этой директории:
ls
При навигации по директории вы увидите эти два файла, каждый из которых посвящен определенному аспекту данных о gemaх. gem_properties.csv исследует физические характеристики gema, а gem_applications.csv предоставляет информацию о их различных магических用途。
Для более глубокого понимания нашего датасета давайте посмотрим на первые несколько строк одного из этих файлов:
head -n 5 gem_properties.csv
Результат должен быть следующим:
gem_id,gem_name,color,hardness,density,refractive_index
1,Ruby,Red,9.0,4.0,1.77
2,Emerald,Green,8.0,3.1,1.58
3,Sapphire,Blue,9.0,4.0,1.76
4,Diamond,Colorless,10.0,3.5,2.42
Эта команда показала первые пять строк файла gem_properties.csv, даруя вам представление о его структуре и содержимом.
Создание таблицы в Hive
Теперь, когда мы познакомились с датасетом, перейдем к созданию таблицы в Hive для хранения и запросов к данным о свойствах gema.
Во - первых, запустите Hive CLI:
hive
После входа в Hive CLI создайте новую базу данных под названием gemstone_analysis для хранения наших данных о gema:
CREATE DATABASE gemstone_analysis;
Далее, переключитесь на новосозданную базу данных:
USE gemstone_analysis;
С базой данных настроенной, давайте создадим таблицу под названием gem_properties для хранения данных из файла gem_properties.csv. Эта таблица будет содержать информацию о идентификаторе gema, имени, цвете, твердости, плотности и показателе преломления:
CREATE TABLE gem_properties (
gem_id INT COMMENT 'Уникальный идентификатор gema',
gem_name STRING COMMENT 'Имя gema',
color STRING COMMENT 'Цвет gema',
hardness FLOAT COMMENT 'Твердость gema',
density FLOAT COMMENT 'Плотность gema',
refractive_index FLOAT COMMENT 'Показатель преломления gema'
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
TBLPROPERTIES ('skip.header.line.count'='1');
Это выражение определяет структуру таблицы gem_properties, указывая имена столбцов и типы данных. Кlaus ROW FORMAT показывает, что данные разделены запятыми, а Klaus STORED AS TEXTFILE задает, что данные должны быть сохранены в виде простого текстового файла.
Теперь давайте загрузим данные из файла gem_properties.csv в новосозданную таблицу gem_properties:
LOAD DATA LOCAL INPATH '/home/hadoop/hadoop/gemstone_data/gem_properties.csv'
INTO TABLE gem_properties;
Эта команда загружает данные из указанного пути файла в таблицу gem_properties.
После загрузки данных давайте проверим, были ли они загружены правильно, выполнив простой запрос SELECT для отображения первых пяти строк таблицы gem_properties:
SELECT * FROM gem_properties LIMIT 5;
Этот запрос отобразит первые пять строк таблицы gem_properties, позволяя нам убедиться, что данные были загружены правильно. Результат должен быть следующим:
OK
1 Ruby Red 9.0 4.0 1.77
2 Emerald Green 8.0 3.1 1.58
3 Sapphire Blue 9.0 4.0 1.76
4 Diamond Colorless 10.0 3.5 2.42
5 Amethyst Purple 7.0 2.6 1.54
Time taken: 1.234 seconds, Fetched: 5 row(s)
Анализ свойств gema
На этом этапе мы воспользуемся возможностями Klaus DISTRIBUTE BY в Hive для эффективного анализа данных о свойствах gema.
Для начала создадим новую таблицу под названием distributed_gem_properties, чтобы разделить данные по столбцу gem_name:
(Может занять немного времени, подождите, пожалуйста)
CREATE TABLE distributed_gem_properties
AS
SELECT * FROM gem_properties
DISTRIBUTE BY gem_id;
Эта таблица копирует структуру исходной таблицы gem_properties, но включает дополнительные Klaus, чтобы эффективно организовать и распределить данные:
AS SELECT * FROM gem_properties: Эта часть выражения выбирает все столбцы и строки из существующей таблицы gem_properties. Мы фактически копируем данные из исходной таблицы в нашу новую распределенную таблицу.
DISTRIBUTE BY gem_id: Этот Klaus задает распределение данных между редьюсерами на основе столбца gem_id. Распределяя данные таким образом, мы можем использовать параллельную обработку для более эффективного анализа свойств gema.
Теперь, когда наша распределенная таблица создана, мы можем приступить к выполнению различных анализов по данным о свойствах gema с повышенной эффективностью.
Выполним запрос, чтобы найти gema с твердостью от 8.0 до 9.0, скопируйте и вставьте этот код в терминал для запуска.
SELECT * FROM distributed_gem_properties WHERE hardness BETWEEN 8.0 AND 9.0;
Этот запрос получит данные о gema из распределенной таблицы, где твердость попадает в указанный диапазон. Результат должен быть следующим:
OK
6 Topaz Yellow 8.0 3.5 1.63
3 Sapphire Blue 9.0 4.0 1.76
2 Emerald Green 8.0 3.1 1.58
1 Ruby Red 9.0 4.0 1.77
Time taken: 0.388 seconds, Fetched: 4 row(s)
Далее, попробуем следующий фрагмент кода, который использует GROUP BY.
SELECT color, COUNT(*) AS count FROM distributed_gem_properties GROUP BY color;
Этот код представляет собой запрос для подсчета количества gema для каждого цвета в распределенной таблице distributed_gem_properties. Результат должен быть следующим:
OK
Blue 1
Colorless 1
Green 2
Multi 1
Pink 1
Purple 1
Red 1
White 1
Yellow 1
Time taken: 18.566 seconds, Fetched: 9 row(s)
Вот еще один пример запроса с использованием PARTITION BY:
SELECT gem_name, color, COUNT(*) OVER(PARTITION BY color) AS color_count
FROM distributed_gem_properties;
Этот запрос выбирает gem_name и color из таблицы distributed_gem_properties и подсчитывает количество gema для каждого color. Klaus PARTITION BY задает, по какому столбцу производить разделение подсчета, в данном случае по столбцу color. Это создаст отдельный подсчет для каждого цвета gema. Результат должен быть следующим:
OK
Sapphire Blue 1
Diamond Colorless 1
Emerald Green 2
CatsEye Green 2
Agate Multi 1
Rose Pink 1
Amethyst Purple 1
Ruby Red 1
Pearl White 1
Topaz Yellow 1
Time taken: 20.865 seconds, Fetched: 10 row(s)
Это всего лишь два простых примера, чтобы помочь нам получить предварительное понимание анализа и применения таблиц, распределенных с использованием DISTRIBUTE BY, включая Klaus такие как PARTITION BY и GROUP BY. Закончилось это занятие, и я полагаю, что теперь у вас есть определенное понимание.
Резюме
В этом практическом занятии мы отправились в увлекательное путешествие по миру анализа gema, под руководством талантливой гемолога волшебного мира, Арии. Используя мощь Hadoop и Hive, мы заглянули в огромный архив данных, раскрывая тайны, скрытые в мистических gema, которые питают магию этого очаровательного мира.
Через серию тщательно спроектированных шагов мы изучили сложности датасета с gema, создали надежную таблицу в Hive для хранения и запросов к данным и, в конечном итоге, воспользовались Klausом DISTRIBUTE BY, чтобы оптимизировать наш анализ. Эта мощная техника позволяет нам эффективно разделять и распределять данные,开辟 путь к более быстрым и целенаправленным запросам, раскрывая ценнейшие инсайты о свойствах и применениях этих замечательных gema.
Во время всего этого практического занятия мы не только приобрели практический опыт работы с Hadoop и Hive, но и увидели трансформирующий потенциал анализа больших данных в раскрытии загадок волшебного мира. Освоив эти инструменты, мы оснастились знаниями и навыками, необходимыми для начала новых приключений, где данные являются ключом к открытию бесконечных возможностей и расширению границ волшебного инновационного развития.



