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

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

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

Введение

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

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

Не сдаваться, Ария обратилась к почитаемой экосистеме Hadoop, понимая ее потенциал для преодоления необъятства данных. Ее цель состояла из двух аспектов: углубиться в сложности поведения камней и выявить скрытые закономерности, которые могут революционизировать способы применения магии.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHDFSGroup(["Hadoop HDFS"]) hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHDFSGroup -.-> hadoop/fs_mkdir("FS Shell mkdir") hadoop/HadoopHDFSGroup -.-> hadoop/fs_cp("FS Shell cp") hadoop/HadoopHiveGroup -.-> hadoop/manage_db("Managing Database") hadoop/HadoopHiveGroup -.-> hadoop/create_tables("Creating Tables") hadoop/HadoopHiveGroup -.-> hadoop/load_insert_data("Loading and Inserting Data") hadoop/HadoopHiveGroup -.-> hadoop/group_by("group by Usage") hadoop/HadoopHiveGroup -.-> hadoop/distribute_by("distribute by Usage") hadoop/HadoopHiveGroup -.-> hadoop/partitions_buckets("Implementing Partitions and Buckets") subgraph Lab Skills hadoop/fs_mkdir -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/fs_cp -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/manage_db -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/create_tables -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/load_insert_data -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/group_by -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/distribute_by -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} hadoop/partitions_buckets -.-> lab-288967{{"Анализ gema с использованием Hadoop"}} end

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