Optimierung von kosmischen Rennsdaten

HadoopHadoopBeginner
Jetzt üben

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

Einführung

In der Zukunft findet ein hochriskanter intergalaktischer Rennspielturnier auf einer Reihe von gefährlichen Rennstrecken im Weltall statt. Als Beamter für die Sicherheit im Weltallrennen hast du die primäre Aufgabe, die Sicherheit und Fairness dieser kosmischen Rennen zu gewährleisten, indem du die Rennstrecken und die teilnehmenden Raumschiffe genau überwachst.

Die Mission besteht darin, die Telemetriedaten aus verschiedenen Abschnitten der Rennstrecken zu analysieren, um potenzielle Gefahren, Rennverstöße zu identifizieren und das Rennserum für Wettbewerber und Zuschauer zu optimieren. Indem du die leistungsstarken Datenverarbeitungsfähigkeiten von Hadoop nutzt, kannst du wertvolle Erkenntnisse gewinnen, die dazu beitragen, die Integrität und Aufregung der kosmischen Rennen aufrechtzuerhalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/create_tables("Creating Tables") hadoop/HadoopHiveGroup -.-> hadoop/basic_hiveql("Basic HiveQL Queries") hadoop/HadoopHiveGroup -.-> hadoop/group_by("group by Usage") hadoop/HadoopHiveGroup -.-> hadoop/collection("Collection Operating Function") hadoop/HadoopHiveGroup -.-> hadoop/table_generating("Table Generating Function") hadoop/HadoopHiveGroup -.-> hadoop/udf("User Defined Function") hadoop/HadoopHiveGroup -.-> hadoop/schema_design("Schema Design") subgraph Lab Skills hadoop/create_tables -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} hadoop/basic_hiveql -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} hadoop/group_by -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} hadoop/collection -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} hadoop/table_generating -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} hadoop/udf -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} hadoop/schema_design -.-> lab-288959{{"Optimierung von kosmischen Rennsdaten"}} end

Entdecke die Sammlung von Betriebsfunktionen in Hive

In diesem Schritt lernst du, wie du die Sammlung von Betriebsfunktionen in Hive verwendest, um die Telemetriedaten zu verarbeiten und zu analysieren, die von den Rennstrecken gesammelt wurden.

Stelle zunächst sicher, dass du als Benutzer hadoop angemeldet bist, indem du den folgenden Befehl in der Konsole ausführst:

su - hadoop

Lass uns nun einen Beispiel-Datensatz erstellen, mit dem wir arbeiten können. Öffne einen Texteditor und erstelle eine neue Datei namens racetrack_data.txt mit dem folgenden Inhalt:

1,Sector1,Benny,32.5,12.7,45.2
2,Sector2,Zara,28.9,14.1,43.0
3,Sector1,Alex,30.2,11.5,41.7
4,Sector3,Benny,35.7,10.2,45.9
5,Sector2,Zara,31.1,12.8,43.9
6,Sector3,Alex,29.8,15.7,45.5

Dieser Datensatz repräsentiert Telemetriedaten aus verschiedenen Sektoren der Rennstrecke, wobei die Spalten die Record-ID, den Sektornamen, den Rennfahrer-Namen, die Geschwindigkeit, die Höhe und die Gesamtscore repräsentieren.

Lass uns nun die Hive-Befehlszeilenschnittstelle starten:

hive

Als Nächstes erstelle eine neue Hive-Tabelle, um diese Daten zu speichern:

CREATE TABLE racetrack_data (
    id INT,
    sector STRING,
    racer STRING,
    speed DOUBLE,
    altitude DOUBLE,
    total_score DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Lade die Daten aus der Datei racetrack_data.txt in die Hive-Tabelle:

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

Lass uns nun einige Sammlung von Betriebsfunktionen in Hive erkunden:

  1. Hole eine Liste der eindeutigen Rennfahrer-Namen.
SELECT DISTINCT racer FROM racetrack_data;
  1. Hole eine Liste der Sektornamen und die Anzahl der Aufzeichnungen für jeden Sektor.
SELECT sector, COUNT(*) AS record_count FROM racetrack_data GROUP BY sector;
  1. Hole die maximale Geschwindigkeit für jeden Rennfahrer.
SELECT racer, MAX(speed) AS max_speed FROM racetrack_data GROUP BY racer;
  1. Hole die Liste der Rennfahrer und ihre durchschnittlichen Scores.
SELECT racer, AVG(total_score) AS avg_score FROM racetrack_data GROUP BY racer;

Diese Beispiele zeigen, wie du Funktionen wie DISTINCT, COUNT, MAX und AVG verwendest, um die Telemetriedaten zu analysieren und wertvolle Erkenntnisse zu extrahieren.

Analysiere Daten mit benannten Struktur-Sammlungen

In diesem Schritt lernst du, wie du die named_struct-Funktion in Hive verwendest, um komplexe Datenstrukturen zu erstellen und die Telemetriedaten effektiver zu analysieren.

Lass uns zunächst eine neue Hive-Tabelle mit einer geschachtelten Struktur erstellen, um zusätzliche Rennfahrerinformationen zu speichern:

CREATE TABLE racer_info (
    id INT,
    racer STRUCT<name:STRING, team:STRING, age:INT>,
    performance STRUCT<speed:DOUBLE, altitude:DOUBLE, total_score:DOUBLE>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '#'
STORED AS TEXTFILE;

Lass uns nun einige Beispiel-Daten in die racer_info-Tabelle einfügen:

INSERT INTO TABLE racer_info
VALUES
    (1, named_struct('name', 'Benny', 'team', 'Cosmic Racers', 'age', 28), named_struct('speed', CAST(32.5 AS DOUBLE), 'altitude', CAST(12.7 AS DOUBLE), 'total_score', CAST(45.2 AS DOUBLE))),
    (2, named_struct('name', 'Zara', 'team', 'Stellar Speeders', 'age', 32), named_struct('speed', CAST(28.9 AS DOUBLE), 'altitude', CAST(14.1 AS DOUBLE), 'total_score', CAST(43.0 AS DOUBLE))),
    (3, named_struct('name', 'Alex', 'team', 'Galactic Gliders', 'age', 25), named_struct('speed', CAST(30.2 AS DOUBLE), 'altitude', CAST(11.5 AS DOUBLE), 'total_score', CAST(41.7 AS DOUBLE))),
    (4, named_struct('name', 'Benny', 'team', 'Cosmic Racers', 'age', 28), named_struct('speed', CAST(35.7 AS DOUBLE), 'altitude', CAST(10.2 AS DOUBLE), 'total_score', CAST(45.9 AS DOUBLE))),
    (5, named_struct('name', 'Zara', 'team', 'Stellar Speeders', 'age', 32), named_struct('speed', CAST(31.1 AS DOUBLE), 'altitude', CAST(12.8 AS DOUBLE), 'total_score', CAST(43.9 AS DOUBLE))),
    (6, named_struct('name', 'Alex', 'team', 'Galactic Gliders', 'age', 25), named_struct('speed', CAST(29.8 AS DOUBLE), 'altitude', CAST(15.7 AS DOUBLE), 'total_score', CAST(45.5 AS DOUBLE)));

Lass uns nun die Daten mit der named_struct-Funktion analysieren:

  1. Hole die Rennfahrer-Namen und ihre Teams.
SELECT racer.name, racer.team FROM racer_info;
  1. Hole die Rennfahrer-Namen und ihre maximale Geschwindigkeit.
SELECT racer.name, performance.speed AS max_speed FROM racer_info;
  1. Hole die Rennfahrer-Namen, ihre Teams und ihre durchschnittlichen Scores.
SELECT racer.name, racer.team, AVG(performance.total_score) AS average_score
FROM racer_info
GROUP BY racer.name, racer.team;

Diese Beispiele zeigen, wie du die named_struct-Funktion verwendest, um komplexe Datenstrukturen zu erstellen und die Daten zu analysieren.

Analysiere Daten mit Sammlungsmengefunktionen

In diesem Schritt lernst du, wie du die collect_set-Funktion in Hive verwendest, um Mengenoperationen auf den Telemetriedaten durchzuführen.

Lass uns zunächst eine neue Hive-Tabelle erstellen, um die Rennfahrer-Ranglisten zu speichern:

CREATE TABLE racer_rankings (
    race_id INT,
    sector STRING,
    racer_names ARRAY<STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '#'
STORED AS TEXTFILE;

Lass uns nun einige Beispiel-Daten in die racer_rankings-Tabelle einfügen:

INSERT INTO TABLE racer_rankings
VALUES
    (1, 'Sector1', ARRAY('Benny', 'Alex')),
    (2, 'Sector2', ARRAY('Zara', 'Alex')),
    (3, 'Sector3', ARRAY('Benny', 'Zara', 'Alex')),
    (4, 'Sector1', ARRAY('Benny', 'Zara')),
    (5, 'Sector2', ARRAY('Zara', 'Alex')),
    (6, 'Sector3', ARRAY('Benny', 'Alex'));

Lass uns nun die Daten mit der collect_set-Funktion analysieren:

  1. Hole die Liste der eindeutigen Rennfahrer in allen Sektoren.
SELECT DISTINCT racer_name
FROM racer_rankings
LATERAL VIEW EXPLODE(racer_names) rn AS racer_name;
  1. Hole die Liste der Rennfahrer, die in allen Sektoren teilgenommen haben.
SELECT racer_name
FROM (
  SELECT collect_set(racer_names) AS all_racers
  FROM racer_rankings
) t
LATERAL VIEW EXPLODE(all_racers) rn AS racer_name;
  1. Hole die Liste der Rennfahrer, die in mindestens zwei Sektoren teilgenommen haben.
SELECT racer_name
FROM (
  SELECT racer_name, COUNT(DISTINCT sector) AS num_sectors
  FROM racer_rankings LATERAL VIEW explode(racer_names) exploded_table AS racer_name
  GROUP BY racer_name
) t
WHERE num_sectors >= 2;

Diese Beispiele zeigen, wie du die collect_set-Funktion verwendest, um Mengenoperationen wie DISTINCT, Schnittmenge und Vereinigung auf den Telemetriedaten durchzuführen.

Zusammenfassung

In diesem Lab haben wir verschiedene Sammlung von Betriebsfunktionen in Hive untersucht, wie DISTINCT, COUNT, MAX, AVG, named_struct, LATERAL VIEW, EXPLODE und collection_set. Indem wir mit Beispiel-Datensätzen arbeiten, die Telemetriedaten aus einem intergalaktischen Rennspielturnier repräsentieren, haben wir gelernt, wie man aus komplexen Datenstrukturen wertvolle Erkenntnisse extrahiert.

Durch praktische Übungen haben wir praktische Erfahrungen bei der Erstellung geschachtelter Datenstrukturen, der Ausführung von Mengenoperationen und der Aggregation von Daten gemäß bestimmten Kriterien gewonnen. Dieses Wissen wird in unserer Rolle als Beamte für die Sicherheit im Weltallrennen unschätzbar sein, da es uns ermöglicht, die Rennstrecken effektiv zu überwachen, potenzielle Gefahren zu identifizieren und die Fairness und Integrität der kosmischen Rennen zu gewährleisten.

Insgesamt hat dieses Lab eine umfassende Einführung in die Sammlung von Betriebsfunktionen von Hive gegeben und uns die erforderlichen Fähigkeiten vermittelt, um in der Hadoop-Umgebung effizient große Datensätze zu analysieren und zu verarbeiten.