Einführung in HiveQL

HiveQL, allgemein bekannt als HQL, ist eine SQL-ähnliche Abfragesprache für die Verarbeitung großer Datenmengen aus der Hadoop-Umgebung. Ursprünglich von Facebook um 2007 entwickelt, wurde Hive später zu einem Open-Source-Apache-Projekt. Hive-Abfragen mit einer SQL-ähnlichen Syntax sind heutzutage bei Datenanalysten beliebt. Mithilfe von HiveQL, das HDFS als Speicher und MapReduce für die Verarbeitung verwendet, können Erkenntnisse für Big-Data-Benutzer mit minimaler Codiererfahrung gewonnen werden. Verschiedene andere verteilte Berechnungsmodule wie Apache Tez und Apache Spark können mit HiveQL zur schnelleren Verarbeitung umfangreicher Datenanalysen verwendet werden. Die verschiedenen Verwendungsmöglichkeiten von HiveQL sind: - CLI (Command Line Interface), kommerzielle Produkte wie Karmasphere, Clouderas Open Source Hue und Qubole.

Arbeiten von HiveQL

Hive bietet einen SQL-ähnlichen Dialekt für die Datenmanipulation, sodass wir keine MapReduce-Jobs auf niedriger Ebene schreiben müssen, um Daten (über Mapper) abzurufen und die Endergebnisse (über Reducer-Module) zu aggregieren.

  • Hive-Abfrage ausführen

Schritte zum Ausführen einer Hive-Abfrage sind:

  1. Die Hive-Schnittstelle (über CLI oder Web-UI) sendet die Abfrage an Driver (JDBC, ODBC oder Thrift Server), um sie zu kompilieren, zu optimieren und auszuführen. Es überprüft die Abfrage über einen Compiler auf Syntax und Ausführungsplan.
  2. Der Compiler sendet eine Anfrage an Metastore und empfängt Metadaten als Antwort.
  3. Der Compiler übermittelt den Ausführungsplan an den Treiber zurück, der ihn weiter an die Execution Engine sendet.
  4. Die Ausführungs-Engine interagiert mit dem Job Tracker, dem Namensknoten, um den Job auszuführen.
  5. Parallel dazu führt die Ausführungs-Engine auch die Metadatenoperation aus.
  6. Der Name-Knoten erledigt die Arbeit mit dem Task-Tracker oder mit Datenknoten.
  7. Ergebnisse, die mit der Ausführungsengine geteilt werden und die dann über den Treiber auf der Benutzeroberfläche angezeigt werden.
  • Optimierung von Abfragen

Optimieren von HiveQL zur besseren Optimierung von Abfragen. Mit den unten angegebenen Befehlen können wir die Standardkonfigurationen überschreiben und eine schnellere Abfrageausführung ermöglichen.

1 . SET hive.execution.engine = tez

Standardmäßig ist das Ausführungsmodul auf Mapreduce eingestellt, wir können es jedoch explizit auf tez (nur für Hadoop 2) oder Spark (ab Hive 1.1.0) einstellen.

2 . SET hive.mapred.mode = unstrict

Dies ist für die dynamische Partitionierung vorgesehen, die beim Laden großer Datenmengen hilfreich ist. Die statische Partitionierung ist jedoch standardmäßig eingestellt, was im „strengen“ Modus geschieht.

3 . SET hive.vectorized.execution = true

set hive.vectorized.execution.enabled = true

Durch die Ausführung vektorisierter Abfragen können Vorgänge wie -aggregiert, gefiltert oder verknüpft in Stapeln von 1024 Zeilen statt einer einzelnen Zeile gleichzeitig ausgeführt werden.

4 . SET hive.auto.convert.join = true

Beim Verknüpfen eines großen Datensatzes mit einem sehr kleinen Datensatz sind Kartenverknüpfungen effizienter und können mit dem obigen Befehl festgelegt werden.

5 . SET hive.exec.parallel = true

MapReduce-Jobs werden in Hadoop parallel ausgeführt. Wenn Abfragen nicht voneinander abhängig sind, kann manchmal die parallele Ausführung bevorzugt werden, was zu einer besseren Speicherverwaltung führt.

6 . SET hive.exec.compress.output = true

Dadurch kann die endgültige Ausgabe in HDFS in einem komprimierten Format gespeichert werden.

7 . SET hive.exec.compress.output = true

Dadurch kann die endgültige Ausgabe in HDFS in einem komprimierten Format gespeichert werden.

Funktionen von HiveQL

  1. Als Hochsprache werden Hive-Abfragen implizit in kartenreduzierte Jobs oder komplexe DAGs (Directed Acyclic Graphs) konvertiert. Mit dem Schlüsselwort "Explain" vor der Abfrage können wir den Abfrageplan abrufen.
  2. Schnellere Abfrageausführung durch Verwendung des Metadatenspeichers im RDMS-Format und Replikation von Daten, um das Abrufen bei Verlust zu vereinfachen.
  3. Die Bitmap-Indizierung dient zur Beschleunigung von Abfragen.
  4. Verbessert die Leistung, indem die Partitionierung von Daten ermöglicht wird.
  5. Hive kann verschiedene Arten von komprimierten Dateien verarbeiten und so Speicherplatz sparen.
  6. Um Zeichenfolgen, Ganzzahlen oder Datumsangaben zu bearbeiten, unterstützt HiveQL die Erweiterung der benutzerdefinierten Funktionen (UDF), um Probleme zu lösen, die von integrierten UDFs nicht unterstützt werden.
  7. Es bietet eine Reihe zusätzlicher APIs zum Erstellen einer benutzerdefinierten Abfrage-Engine.
  8. Es werden verschiedene Dateiformate wie Textdatei, Sequenzdatei, ORC (Optimized Row Columnar), RCFile, Avro und Parkett unterstützt. Das ORC-Dateiformat ist am besten geeignet, um die Abfrageleistung zu verbessern, da es Daten auf optimale Weise speichert und so die Ausführung von Abfragen beschleunigt.
  9. Es ist ein effizientes Datenanalyse- und ETL-Tool für große Datenmengen. 10. Einfache Erstellung von Abfragen, da es SQL ähnelt. DDL-Befehle (Data Definition Language) in Hive werden verwendet, um die Struktur der Datenbank oder Tabellen in Hive anzugeben und zu ändern. Diese Befehle sind Löschen, Erstellen, Abschneiden, Ändern, Anzeigen oder Beschreiben.

Einschränkungen

  1. Hive-Abfragen haben eine höhere Latenz, da Hadoop ein Batch-orientiertes System ist.
  2. Geschachtelte oder Unterabfragen werden nicht unterstützt.
  3. Aktualisierungs-, Lösch- oder Einfügevorgänge können nicht auf Datensatzebene ausgeführt werden.
  4. Echtzeitdatenverarbeitung oder -abfragen werden im Hive Scope von HQL nicht angeboten.

Mit Petabytes an Daten, die von Milliarden bis zu Billionen von Aufzeichnungen reichen, hat HiveQL einen großen Spielraum für Big-Data-Profis.

Umfang von HiveQL

Im Folgenden werden die Möglichkeiten beschrieben, mit denen der Umfang von HiveQL erweitert und verbessert werden kann, um die täglich von Benutzern generierten Daten zu analysieren.

Sicherheit: Neben der Verarbeitung großer Datenmengen bietet Hive Datensicherheit. Diese Aufgabe ist für das verteilte System komplex, da für die Kommunikation mehrere Komponenten erforderlich sind. Die Unterstützung der Kerberos-Autorisierung ermöglicht die Authentifizierung zwischen Client und Server.

Sperren : Hive hat traditionell keine Sperren für Zeilen, Spalten oder Abfragen. Hive kann Apache Zookeeper für das Sperren von Unterstützung nutzen.

Workflow-Management : Apache Oozie ist ein Workflow-Scheduler zur Automatisierung verschiedener HiveQL-Abfragen, die nacheinander oder parallel ausgeführt werden sollen.

Visualisierung: Zeppelin Notebook ist ein webbasiertes Notebook, das eine interaktive Datenanalyse ermöglicht. Es unterstützt Hive und Spark für die Visualisierung und Zusammenarbeit von Daten.

Fazit

HiveQL wird in vielen Unternehmen zur Lösung komplexer Anwendungsfälle eingesetzt. Unter Berücksichtigung der Funktionen und Einschränkungen, die die Sprache bietet, wird die Hive-Abfragesprache in den Bereichen Telekommunikation, Gesundheitswesen, Einzelhandel, Bankwesen und Finanzdienstleistungen und sogar im Klimabewertungssystem des Test Propulsion Laboratory der NASA verwendet. Das einfache Schreiben von SQL-ähnlichen Abfragen und Befehlen sorgt für eine breitere Akzeptanz. Das wachsende Stellenangebot in diesem Bereich lockt junge Leute und Fachleute aus verschiedenen Branchen an, um praktische Erfahrungen und Fachkenntnisse zu sammeln.

Empfohlene Artikel

Dies ist eine Anleitung zu HiveQL. Hier diskutieren wir die Einführung in HiveQL, die Optimierung von Abfragen und deren Einschränkungen und Funktionen. Sie können auch unsere verwandten Artikel durchgehen, um mehr zu erfahren -

  1. Was sind Hive-Datentypen?
  2. Hive Alternativen | Finden Sie die Funktionen heraus
  3. Hauptkomponenten von Hive-Befehlen
  4. Top 10 Hive Interview-Fragen

Kategorie: