Edelsteinanalyse mit Hadoop

HadoopHadoopBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In der zauberhaften Welt der Königlichen Akademie der Magie widmete sich ein Team von erfahrenen Edelsteinexperten der Entschlüsselung der Geheimnisse der magischen Edelsteine, die die Zaubereiwelt antrieben. Unter ihnen war die begnadete Forscherin Aria, deren unerschütterliche Neugier und scharfe Intelligenz sie zu einer Macht machten, mit der gerechnet werden musste.

Kürzlich erwarb die Akademie eine riesige Datenmenge über die Eigenschaften und Anwendungen dieser Edelsteine, ein Wissensreichtum, der versprach, neue Wege der magischen Innovation zu eröffnen. Die enorme Informationsmenge stellte jedoch eine bedrohliche Herausforderung dar, die die Hilfe mächtiger Analysetools erforderte.

Aria ließ sich nicht entmutigen und wandte sich an die ehrenwerte Hadoop-Ekosystem, indem sie dessen Potenzial erkannte, um die ungeordnete Datenmenge zu meistern. Ihr Ziel war zweifach: tiefer in die Komplexitäten des Verhaltens der Edelsteine einzudringen und verborgene Muster zu entdecken, die die Art und Weise, wie Magie genutzt und eingesetzt wird, revolutionieren könnten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop(("Hadoop")) -.-> hadoop/HadoopHDFSGroup(["Hadoop HDFS"]) 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{{"Edelsteinanalyse mit Hadoop"}} hadoop/fs_cp -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} hadoop/manage_db -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} hadoop/create_tables -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} hadoop/load_insert_data -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} hadoop/group_by -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} hadoop/distribute_by -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} hadoop/partitions_buckets -.-> lab-288967{{"Edelsteinanalyse mit Hadoop"}} end

Die Edelstein-Datenmenge erkunden

In diesem Schritt werden wir uns mit der Edelstein-Datenmenge und ihrer Struktur vertraut machen, um die Grundlage für unsere nachfolgende Analyse zu legen.
Stellen Sie zunächst sicher, dass Sie als Benutzer hadoop angemeldet sind, indem Sie den folgenden Befehl in der Konsole ausführen:

su - hadoop

Lassen Sie uns nun mit dem Erstellen eines Beispiels beginnen. Kopieren Sie den folgenden Befehl in die Konsole, um unsere Beispiel-Datei zu erstellen.

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

Wir befinden uns nun im Verzeichnis gemstone_data. Lassen Sie uns einen Moment Zeit nehmen, um den Inhalt dieses Verzeichnisses zu überprüfen:

ls

Wenn Sie sich durch das Verzeichnis navigieren, werden Sie diese beiden Dateien sehen, wobei jede einer bestimmten Aspekt der Edelstein-Daten gewidmet ist. gem_properties.csv geht auf die physikalischen Eigenschaften von Edelsteinen ein, während gem_applications.csv Einblicke in ihre verschiedenen magischen Anwendungen gibt.

Um tiefere Einblicke in unsere Datenmenge zu erhalten, schauen wir uns die ersten Zeilen einer dieser Dateien an:

head -n 5 gem_properties.csv

Das Ergebnis sollte wie folgt aussehen:

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

Dieser Befehl hat die ersten fünf Zeilen der Datei gem_properties.csv angezeigt und Ihnen einen Einblick in ihre Struktur und Inhalt gegeben.

Ein Hive-Tabelle erstellen

Jetzt, nachdem wir uns mit der Datenmenge vertraut gemacht haben, können wir fortfahren und eine Hive-Tabelle erstellen, um die Edelstein-Eigenschaftsdaten zu speichern und abzufragen.

Stellen Sie zunächst die Hive-Befehlszeilenschnittstelle (CLI) auf:

hive

Sobald Sie sich in der Hive-CLI befinden, erstellen Sie eine neue Datenbank namens gemstone_analysis, um unsere Edelstein-Daten zu speichern:

CREATE DATABASE gemstone_analysis;

Als Nächstes wechseln Sie zur gerade erstellten Datenbank:

USE gemstone_analysis;

Mit der Datenbank eingerichtet, können wir fortfahren und eine Tabelle namens gem_properties erstellen, um die Daten aus der Datei gem_properties.csv zu speichern. Diese Tabelle wird Informationen über die Edelstein-ID, -Name, -Farbe, -Härte, -Dichte und Brechungsindex enthalten:

CREATE TABLE gem_properties (
  gem_id INT COMMENT 'Eindeutige ID für den Edelstein',
  gem_name STRING COMMENT 'Name des Edelsteins',
  color STRING COMMENT 'Farbe des Edelsteins',
  hardness FLOAT COMMENT 'Härte des Edelsteins',
  density FLOAT COMMENT 'Dichte des Edelsteins',
  refractive_index FLOAT COMMENT 'Brechungsindex des Edelsteins'
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
TBLPROPERTIES ('skip.header.line.count'='1');

Dieser Befehl definiert die Struktur der Tabelle gem_properties, indem er die Spaltennamen und -datentypen angibt. Die ROW FORMAT-Klausel gibt an, dass die Daten durch Kommas getrennt sind, und die STORED AS TEXTFILE-Klausel gibt an, dass die Daten als einfache Textdatei gespeichert werden sollen.

Lassen Sie uns nun die Daten aus der Datei gem_properties.csv in die gerade erstellte Tabelle gem_properties laden:

LOAD DATA LOCAL INPATH '/home/hadoop/hadoop/gemstone_data/gem_properties.csv'
INTO TABLE gem_properties;

Dieser Befehl lädt die Daten aus dem angegebenen Dateipfad in die Tabelle gem_properties.

Sobald die Daten geladen sind, überprüfen wir, ob sie korrekt geladen wurden, indem wir eine einfache SELECT-Anfrage ausführen, um die ersten fünf Zeilen der Tabelle gem_properties anzuzeigen:

SELECT * FROM gem_properties LIMIT 5;

Diese Abfrage wird die ersten fünf Zeilen der Tabelle gem_properties anzeigen und uns ermöglichen, zu bestätigen, dass die Daten korrekt geladen wurden. Das Ergebnis sollte wie folgt aussehen:

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)

Edelstein-Eigenschaften analysieren

In diesem Schritt werden wir die Macht der DISTRIBUTE BY-Klausel in Hive nutzen, um die Edelstein-Eigenschaftsdaten effizient zu analysieren.

Um zu beginnen, erstellen wir eine neue Tabelle namens distributed_gem_properties, um die Daten nach der gem_name-Spalte zu partitionieren:

(Es kann ein bisschen Zeit dauern, bitte seien Sie geduldig)

CREATE TABLE distributed_gem_properties
AS
SELECT * FROM gem_properties
DISTRIBUTE BY gem_id;

Diese Tabelle spiegelt die Struktur der ursprünglichen gem_properties-Tabelle wider, enthält jedoch zusätzliche Klauseln, um die Daten effektiv zu organisieren und zu verteilen:

AS SELECT * FROM gem_properties: Dieser Teil des Statements wählt alle Spalten und Zeilen aus der vorhandenen gem_properties-Tabelle aus. Wir kopieren im Grunde die Daten von der ursprünglichen Tabelle in unsere neue verteilte Tabelle.

DISTRIBUTE BY gem_id: Diese Klausel bestimmt die Verteilung der Daten über die Reduzierer basierend auf der gem_id-Spalte. Indem wir die Daten auf diese Weise verteilen, können wir die parallele Verarbeitung nutzen, um die Edelstein-Eigenschaften effizienter zu analysieren.

Jetzt, nachdem wir unsere verteilte Tabelle eingerichtet haben, können wir mit verbesserter Effizienz verschiedene Analysen an den Edelstein-Eigenschaftsdaten durchführen.

Lassen Sie uns eine Abfrage ausführen, um Edelsteine mit einer Härte zwischen 8.0 und 9.0 zu finden. Kopieren Sie diesen Code in die Konsole und führen Sie ihn aus.

SELECT * FROM distributed_gem_properties WHERE hardness BETWEEN 8.0 AND 9.0;

Diese Abfrage wird die Edelstein-Daten aus der verteilten Tabelle abrufen, in der die Härte innerhalb des angegebenen Bereichs liegt. Das Ergebnis sollte wie folgt aussehen:

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)

Als Nächstes probieren wir den folgenden Codeausschnitt aus, der GROUP BY nutzt.

SELECT color, COUNT(*) AS count FROM distributed_gem_properties GROUP BY color;

Dieser Code ist ein Abfrageausdruck, der verwendet wird, um die Anzahl der Edelsteine für jede Farbe in der verteilten Tabelle distributed_gem_properties zu zählen. Das Ergebnis sollte wie folgt aussehen:

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)

Hier ist ein weiterer Beispielabfrage mit PARTITION BY:

SELECT gem_name, color, COUNT(*) OVER(PARTITION BY color) AS color_count
FROM distributed_gem_properties;

Diese Abfrage wählt die gem_name und color aus der Tabelle distributed_gem_properties und zählt die Anzahl der Edelsteine für jede color. Die PARTITION BY-Klausel bestimmt, nach welcher Spalte die Zählung partitioniert werden soll, in diesem Fall die color-Spalte. Dies wird eine separate Zählung für jede Farbe von Edelsteinen erzeugen. Das Ergebnis sollte wie folgt aussehen:

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)

Dies sind nur zwei einfache Beispiele, um uns einen ersten Eindruck von der Analyse und Anwendung von tabellen, die mit DISTRIBUTE BY verteilt werden, zu vermitteln, einschließlich Befehlen wie PARTITION BY und GROUP BY. Mit diesem Schluss ist diese Lektion beendet, und ich hoffe, dass Sie jetzt einen gewissen Verständnis haben.

Zusammenfassung

In diesem Lab haben wir eine faszinierende Reise in die Welt der Edelsteinanalyse unternommen, geleitet von der begabten Edelsteinexpertin Aria aus der Zaubereiwelt. Indem wir die Macht von Hadoop und Hive nutzen, haben wir uns in eine riesige Datenmenge vertieft und die Geheimnisse entdeckt, die in den magischen Edelsteinen verborgen sind, die die Magie dieser zauberhaften Welt antreiben.

Durch eine Reihe sorgfältig geplanten Schritte haben wir die Komplexitäten der Edelstein-Datenmenge untersucht, eine robuste Hive-Tabelle erstellt, um die Daten zu speichern und abzufragen, und schließlich die DISTRIBUTE BY-Klause genutzt, um unsere Analyse zu optimieren. Diese leistungsstarke Technik hat es uns ermöglicht, die Daten effizient zu partitionieren und zu verteilen, was den Weg für schnellere und fokussiertere Abfragen ebnet und unerschätzbare Erkenntnisse über die Eigenschaften und Anwendungen dieser erstaunlichen Edelsteine freigibt.

Während des gesamten Labs haben wir nicht nur praktische Erfahrungen mit Hadoop und Hive gewonnen, sondern auch das transformierende Potenzial der Big-Data-Analyse bei der Entschlüsselung der Geheimnisse der Zaubereiwelt gesehen. Indem wir diese Tools beherrschen, haben wir uns mit den Wissen und Fähigkeiten ausgestattet, um neue Abenteuer zu beginnen, wo Daten der Schlüssel zur Entdeckung unendlicher Möglichkeiten und zum Herausfordern der Grenzen der magischen Innovation sind.