Entdecken von antiken Schätzen mit Hadoop

HadoopHadoopBeginner
Jetzt üben

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

Einführung

Stellen Sie sich ein Szenario vor, in dem Sie ein mariner Archäologe sind und die Tiefen der "Sunken Treasure Bay" erkunden. Dieser mystische Hafen wird vermutet, Geheimnisse antiker Zivilisationen, ihre Schätze und Artefakte zu verbergen, die unter den Wellen verloren gegangen sind. Ihr Ziel ist es, diese Schätze zu entdecken und das historische Puzzle zusammenzufügen, das unter der Wasseroberfläche verborgen liegt.

Wenn Sie Ihre unterwasser Expedition beginnen, müssen Sie die verschiedenen Artefakte und Überreste analysieren, die Sie entdecken, und sorgfältig ihre Merkmale und Muster studieren. Hier kommt die Macht der Hadoop Window Functions zum Einsatz, die es Ihnen ermöglicht, komplexe Datenanalysen durchzuführen und die Geheimnisse der Vergangenheit aufzulösen.

Daten einrichten

In diesem Schritt erstellen wir einen Datensatz, der die Artefakte und Überreste simuliert, die Sie während Ihrer unterwasser Exploration entdeckt haben. Dieser Datensatz wird als Grundlage für unsere Analyse mit Hadoop Window Functions dienen.

Stellen Sie zunächst sicher, dass Sie als Benutzer hadoop angemeldet sind, indem Sie den folgenden Befehl in der Konsole ausführen:

su - hadoop

Erstellen wir dann ein neues Verzeichnis namens artifacts im Verzeichnis /home/hadoop:

mkdir /home/hadoop/artifacts
cd artifacts/

Als Nächstes erstellen wir in das Verzeichnis artifacts eine neue Datei namens artifacts.txt mit dem folgenden Inhalt:

1,Gold,2500,15,A1
2,Silver,1800,20,B2
3,Bronze,3000,12,A1
4,Ceramic,1200,18,C3
5,Gold,2800,22,B2
6,Silver,2000,16,A1
7,Bronze,2500,25,C3
8,Ceramic,1500,14,A1
9,Gold,3200,21,B2
10,Silver,1700,19,C3

Diese Datei repräsentiert eine Sammlung von Artefakten mit Details wie ihrem Material, ihrem Alter, der Tiefe, an der sie gefunden wurden, und den Längenangaben.

Daten mit Window Functions erkunden

Jetzt, da unser Datensatz bereit ist, lassen Sie uns ihn mit Hadoop Window Functions erkunden. Wir werden Apache Hive verwenden, eine Data Warehouse-Software, die das Abfragen und Verwalten großer Datensätze in verteilter Speicherung erleichtert.

Starten Sie zunächst die Hive-Shell, indem Sie den folgenden Befehl in der Konsole ausführen:

hive

Als Nächstes erstellen wir eine neue Tabelle namens artifacts, um unseren Datensatz zu speichern:

CREATE TABLE artifacts (
  artifact_id INT,
  material STRING,
  age INT,
  depth INT,
  location STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Laden Sie die Daten aus der Datei artifacts.txt in die Tabelle artifacts:

LOAD DATA LOCAL INPATH '/home/hadoop/artifacts/artifacts.txt' INTO TABLE artifacts;

Lassen Sie uns beginnen, die Spalte age mit den Window Functions RANK() und DENSE_RANK() zu erkunden. Diese Funktionen helfen uns, die relativen Altersränge der Artefakte zu bestimmen:

SELECT
  artifact_id,
  material,
  age,
  RANK() OVER (ORDER BY age DESC) AS rank_age,
  DENSE_RANK() OVER (ORDER BY age DESC) AS dense_rank_age
FROM
  artifacts;

Diese Abfrage wird die Artefakt-Details zusammen mit ihren Altersrängen basierend auf den Funktionen RANK() und DENSE_RANK() ausgeben.

Als Nächstes verwenden wir die Funktionen LAG() und LEAD(), um das Alter aufeinanderfolgender Artefakte zu vergleichen:

SELECT
  artifact_id,
  material,
  age,
  LAG(age, 1) OVER (ORDER BY age DESC) AS prev_age,
  LEAD(age, 1) OVER (ORDER BY age DESC) AS next_age
FROM
  artifacts;

Diese Abfrage wird die Artefakt-Details zusammen mit den Altersangaben des vorherigen und des nächsten Artefakts in der sortierten Sequenz anzeigen.

Artefaktmuster analysieren

In diesem Schritt verwenden wir Window Functions, um Muster zu analysieren und bedeutsame Artefakte basierend auf verschiedenen Kriterien zu identifizieren.

Lassen Sie uns beginnen, indem wir das älteste und neueste Artefakt für jede Materialart finden:

CREATE TABLE result_1
AS
SELECT
  material,
  artifact_id,
  age,
  FIRST_VALUE(artifact_id) OVER (PARTITION BY material ORDER BY age DESC) AS ältestes_artefakt,
  LAST_VALUE(artifact_id) OVER (PARTITION BY material ORDER BY age ASC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS neuestes_artefakt
FROM
  artifacts;

SELECT * FROM result_1;

Diese Abfrage verwendet die Funktionen FIRST_VALUE() und LAST_VALUE(), um das älteste und neueste Artefakt für jede Materialart zu identifizieren.

Als Nächstes finden wir die Artefakte, die im Vergleich zum Durchschnittsalter ihrer Materialart deutlich älter oder jünger sind:

CREATE TABLE result_2
AS
SELECT
  artifact_id,
  material,
  age,
  AVG(age) OVER (PARTITION BY material) AS avg_age_by_material,
  CASE
    WHEN age > AVG(age) OVER (PARTITION BY material) + 200 THEN 'Signifikant älter'
    WHEN age < AVG(age) OVER (PARTITION BY material) - 200 THEN 'Signifikant jünger'
    ELSE 'Durchschnittlich'
  END AS age_category
FROM
  artifacts;

SELECT * FROM result_2;

Diese Abfrage berechnet das Durchschnittsalter für jede Materialart mit der Window-Funktion AVG() und klassifiziert dann jedes Artefakt danach, ob es im Vergleich zum Durchschnittsalter des Materials signifikant älter, signifikant jünger oder durchschnittlich ist.

Zusammenfassung

In diesem Lab haben wir die Macht der Hadoop Window Functions im Rahmen einer marinen Archäologie-Expedition untersucht. Indem wir einen Datensatz von Artefakten und Überresten simuliert haben, haben wir gelernt, wie verschiedene Window Functions wie RANK(), DENSE_RANK(), LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE() und AVG() genutzt werden können, um Muster in den Daten zu analysieren und aufzudecken.

Durch praktische Übungen haben wir Einblicke in die Identifizierung von Altersrängen, das Vergleichen aufeinanderfolgender Artefakt-Alter, das Finden des ältesten und neuesten Artefakts für jede Materialart und die Klassifizierung von Artefakten basierend auf ihrem Alter im Vergleich zum Durchschnitt des Materials gewonnen. Dieses Lab hat eine praktische und ansprechende Erfahrung bei der Verwendung von Hadoop Window Functions zum Entschlüsseln der Geheimnisse der "Sunken Treasure Bay" vermittelt.

Das Design dieses Labs zielte darauf ab, eine fesselnde Szenerie mit praktischen Codierungsexerzissen zu kombinieren, um Lernenden ein tieferes Verständnis von Hadoop Window Functions zu vermitteln, während sie eine fiktive Abenteuerfahrt erkunden. Indem die Lernenden in einem realistischen Kontext eintauchten, förderte das Lab eine engagierendere und unvergesslichere Lernumgebung.