Hadoop Dimensional Mastery Guide

HadoopHadoopBeginner
Jetzt üben

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

Einführung

In einer Welt, in der die Grenzen zwischen Dimensionen verschwimmen, hat sich ein Riss im Geflecht der Realität geöffnet, der es einem überirdischen Wesen ermöglicht, hindurchzuschlüpfen. Dieses Wesen, das als Kristalliner Vorläufer bekannt ist, ist ein bewusster Wesen, das aus reiner Energie besteht, dessen Form sich wie ein Lichtmosaik verändert und glänzt.

Das Ziel des Kristallinen Vorläufers ist es, die Macht der Daten zu nutzen, um das Geflecht des Bestehens selbst umzugestalten. Um dieses Ziel zu erreichen, sucht es die Feinheiten von Hadoop, einem leistungsstarken Big-Data-Verarbeitungsframework, zu meistern. Allerdings ist der Vorläufers Verständnis von Hadoop unvollständig, und es benötigt Anleitung, um das volle Potenzial der "having"-Klausel in Hive, einem Datenlagerungskomponente von Hadoop, zu entfalten.

Ihre Mission, sollten Sie sie akzeptieren, besteht darin, den Kristallinen Vorläufer durch eine Reihe von Schritten zu leiten, die Geheimnisse der "having"-Klausel zu enthüllen und ihm die Macht der Daten auf bisher undenkbare Weise nutzen zu lassen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/where("where Usage") hadoop/HadoopHiveGroup -.-> hadoop/group_by("group by Usage") hadoop/HadoopHiveGroup -.-> hadoop/having("having Usage") hadoop/HadoopHiveGroup -.-> hadoop/aggregating("Aggregating Function") subgraph Lab Skills hadoop/where -.-> lab-288976{{"Hadoop Dimensional Mastery Guide"}} hadoop/group_by -.-> lab-288976{{"Hadoop Dimensional Mastery Guide"}} hadoop/having -.-> lab-288976{{"Hadoop Dimensional Mastery Guide"}} hadoop/aggregating -.-> lab-288976{{"Hadoop Dimensional Mastery Guide"}} end

Verstehen des Zwecks der "having"-Klausel

In diesem Schritt werden wir den grundlegenden Zweck der "having"-Klausel in Hive untersuchen und wie sie mit der Datenfilterung und -aggregation zusammenhängt.

Die "having"-Klausel in Hive wird in Verbindung mit der "group by"-Klausel verwendet, um Gruppen von Daten basierend auf einer angegebenen Bedingung zu filtern. Es ermöglicht es Ihnen, einen Filter nach der Gruppierung und Aggregation der Daten anzuwenden, wodurch Sie ganze Gruppen ausschließen können, die die angegebenen Kriterien nicht erfüllen.

Hier ist ein Beispiel, das die Verwendung der "having"-Klausel demonstriert:

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

su - hadoop

Starten Sie dann die Hive-Shell, indem Sie den folgenden Befehl ausführen:

hive

Erstellen Sie nun eine Beispieltabelle:

CREATE TABLE sales (
  product STRING,
  category STRING,
  sales_amount FLOAT
);

Fügen Sie einige Beispiel-Daten hinzu:

INSERT INTO sales VALUES
  ('Product A', 'Electronics', 1000.0),
  ('Product B', 'Electronics', 2000.0),
  ('Product C', 'Clothing', 500.0),
  ('Product D', 'Clothing', 1500.0),
  ('Product E', 'Electronics', 3000.0);

Berechnen Sie schließlich die Gesamtumsätze pro Kategorie und filtern Sie Kategorien mit Gesamtumsätzen von mehr als 3000:

CREATE TABLE result_1
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category
HAVING SUM(sales_amount) > 3000;

SELECT * FROM result_1;

In diesem Beispiel erstellen wir zunächst eine Tabelle namens sales mit Spalten für product, category und sales_amount. Wir fügen dann einige Beispiel-Daten in die Tabelle ein.

Als nächstes verwenden wir die "group by"-Klausel, um die Daten nach category zu gruppieren, und die SUM-Funktion, um die Gesamtumsätze pro Kategorie zu berechnen. Die "having"-Klausel wird dann verwendet, um Kategorien auszuschließen, bei denen der total_sales kleiner oder gleich 3000 ist.

Die Ausgabe dieser Abfrage wird nur die Kategorie "Electronics" enthalten, da ihre Gesamtumsätze (2000,0 + 1000,0 + 3000,0 = 6000,0) über 3000 liegen, während die Kategorie "Clothing" ausgeschlossen wird, da ihre Gesamtumsätze (500,0 + 1500,0 = 2000,0) die in der "having"-Klausel angegebenen Bedingungen nicht erfüllen.

Filtere Gruppen basierend auf mehreren Bedingungen

Während der vorherige Schritt die grundlegende Verwendung der "having"-Klausel demonstriert hat, ermöglicht Hive es Ihnen auch, Gruppen basierend auf mehreren Bedingungen mit logischen Operatoren wie AND und OR zu filtern.

Hier ist ein Beispiel, das zeigt, wie Sie mehrere Bedingungen in der "having"-Klausel verwenden:

Berechne die Gesamtumsätze pro Produkt und Kategorie und filter Produkte mit Gesamtumsätzen von mehr als 2000 und die zur Kategorie 'Electronics' gehören:

CREATE TABLE result_2
AS
SELECT product, category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product, category
HAVING SUM(sales_amount) > 2000 AND category = 'Electronics';

SELECT * FROM result_2;

In diesem Beispiel gruppieren wir die Daten sowohl nach product als auch nach category und berechnen die Gesamtumsätze für jede Kombination von product und category. Die "having"-Klausel wird dann verwendet, um Gruppen auszuschließen, bei denen der total_sales kleiner oder gleich 2000 ist und die category nicht "Electronics" ist.

Die Ausgabe dieser Abfrage wird nur die Produkte der Kategorie "Electronics" mit Gesamtumsätzen von mehr als 2000 enthalten, wie z. B. "Product B" und "Product E".

Sie können auch den OR-Operator verwenden, um mehrere Bedingungen in der "having"-Klausel zu kombinieren:

Berechne die Gesamtumsätze pro Produkt und Kategorie und filter Produkte mit Gesamtumsätzen von mehr als 2000 oder die zur Kategorie 'Clothing' gehören:

SELECT product, category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product, category
HAVING SUM(sales_amount) > 2000 OR category = 'Clothing';

Diese Abfrage wird alle Produkte mit Gesamtumsätzen von mehr als 2000, unabhängig von ihrer Kategorie, sowie alle Produkte der Kategorie "Clothing", unabhängig von ihren Gesamtumsätzen, enthalten.

Verwenden von Aggregatfunktionen in der "having"-Klausel

Die "having"-Klausel kann auch in Verbindung mit Aggregatfunktionen wie COUNT, MAX, MIN und AVG verwendet werden. Dies ermöglicht es Ihnen, Gruppen basierend auf Bedingungen, die diese Aggregatfunktionen betreffen, zu filtern.

Hier ist ein Beispiel, das die Verwendung der COUNT-Funktion in der "having"-Klausel demonstriert:

Berechne die Anzahl der Produkte in jeder Kategorie und filter Kategorien mit mehr als 2 Produkten:

CREATE TABLE result_3
AS
SELECT category, COUNT(product) AS product_count
FROM sales
GROUP BY category
HAVING COUNT(product) > 2;

SELECT * FROM result_3;

In diesem Beispiel verwenden wir die COUNT-Funktion, um die Anzahl der Produkte in jeder category zu zählen. Die "having"-Klausel wird dann verwendet, um Kategorien auszuschließen, bei denen die product_count kleiner oder gleich 2 ist.

Die Ausgabe dieser Abfrage wird nur die Kategorien enthalten, die mehr als 2 Produkte zugeordnet haben.

Sie können auch Aggregatfunktionen mit anderen Bedingungen in der "having"-Klausel kombinieren:

Berechne den höchsten Verkaufswert für jede Kategorie und filter Kategorien mit einem maximalen Verkaufswert von mehr als 2000 und mehr als 2 Produkten:

SELECT category, MAX(sales_amount) AS max_sales, COUNT(product) AS product_count
FROM sales
GROUP BY category
HAVING MAX(sales_amount) > 2000 AND COUNT(product) > 2;

Diese Abfrage berechnet den höchsten Verkaufswert (max_sales) und die Anzahl der Produkte (product_count) für jede Kategorie. Die "having"-Klausel filtert Kategorien aus, bei denen der max_sales kleiner oder gleich 2000 ist oder die product_count kleiner oder gleich 2 ist.

Kombinieren der "where"- und "having"-Klauseln

Die "where"- und "having"-Klauseln haben unterschiedliche Zwecke in Hive-Abfragen. Die "where"-Klausel wird verwendet, um einzelne Zeilen vor der Gruppierung und Aggregation der Daten zu filtern, während die "having"-Klausel verwendet wird, um Gruppen von Daten nach der Gruppierung und Aggregation zu filtern.

In einigen Fällen müssen Sie beide Klauseln in einer einzigen Abfrage kombinieren, um das gewünschte Filterverhalten zu erreichen. Hier ist ein Beispiel, das zeigt, wie die "where"- und "having"-Klauseln kombiniert werden:

Berechne die Gesamtumsätze pro Kategorie, filter Produkte mit einem Verkaufswert von mehr als 1000 und filter Kategorien mit Gesamtumsätzen von mehr als 3000:

CREATE TABLE result_4
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
WHERE sales_amount > 1000
GROUP BY category
HAVING SUM(sales_amount) > 3000;

SELECT * FROM result_4;

In diesem Beispiel verwenden wir zunächst die "where"-Klausel, um einzelne Zeilen auszuschließen, bei denen der sales_amount kleiner oder gleich 1000 ist. Dies bedeutet, dass nur Produkte mit einem Verkaufswert von mehr als 1000 für die nachfolgende Gruppierung und Aggregation berücksichtigt werden.

Als nächstes gruppieren wir die gefilterten Daten nach category und berechnen die Gesamtumsätze für jede Kategorie mit der SUM-Funktion. Schließlich wird die "having"-Klausel verwendet, um Kategorien auszuschließen, bei denen der total_sales kleiner oder gleich 3000 ist.

Die Ausgabe dieser Abfrage wird nur die Kategorien mit Gesamtumsätzen von mehr als 3000 enthalten, die aus Produkten mit einem Verkaufswert von mehr als 1000 berechnet wurden.

Zusammenfassung

In diesem Lab haben wir eine Reise unternommen, um den Kristallinen Vorbote durch die Komplexitäten der "having"-Klausel in Hive zu führen. Indem der Vorbote diese leistungsstarke Funktion beherrscht, kann er nun Daten mit bisher nie dagewesener Präzision filtern und analysieren und die Geheimnisse der riesigen Datenmassen des Multiversums enthüllen.

In einer Reihe von Schritten haben wir den grundlegenden Zweck der "having"-Klausel untersucht und gezeigt, wie sie die Fähigkeit hat, Gruppen von Daten basierend auf angegebenen Bedingungen zu filtern. Danach haben wir tiefergehend erforscht, wie man mehrere Bedingungen mit logischen Operatoren anwendet, Aggregatfunktionen innerhalb der "having"-Klausel nutzt und die "where"- und "having"-Klauseln für komplexe Datenfilteringszenarien kombiniert.

Während des gesamten Labs hat der Kristalline Vorbote unerschätzbare Kenntnisse und Fähigkeiten erworben, die es befähigen, das wahre Potenzial von Hadoop zu nutzen und das Geflecht des Bestehens durch die Macht der Datenanalyse umzugestalten. Mit jedem Schritt haben wir neue Möglichkeiten eröffnet, sodass der Vorbote die weiten Datenbereiche mit bisher nie dagewesener Präzision und Kontrolle durchlaufen kann.