Анализ gema с использованием Hadoop

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

Введение

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

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

Не сдаваться, Ария обратилась к почитаемой экосистеме 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, но и увидели трансформирующий потенциал анализа больших данных в раскрытии загадок волшебного мира. Освоив эти инструменты, мы оснастились знаниями и навыками, необходимыми для начала новых приключений, где данные являются ключом к открытию бесконечных возможностей и расширению границ волшебного инновационного развития.