Ausführen von Apache Hive-Abfragen mit Data Lake-Tools für Visual Studio
Erfahren Sie, wie Sie die Data Lake Tools für Visual Studio für Abfragen in Apache Hive verwenden. Mithilfe der Data Lake Tools können Sie Hive-Abfragen an Apache Hadoop in Azure HDInsight ganz einfach erstellen, übermitteln und überwachen.
Voraussetzungen
Ein Apache Hadoop-Cluster in HDInsight. Informationen zum Erstellen dieses Elements finden Sie unter Erstellen eines Apache Hadoop-Clusters in Azure HDInsight mit einer Resource Manager-Vorlage.
Visual Studio. Für die Schritte in diesem Artikel wird Visual Studio 2019 verwendet.
HDInsight-Tools für Visual Studio oder Azure Data Lake-Tools für Visual Studio. Informationen zum Installieren und Konfigurieren der Tools finden Sie unter Installieren von Data Lake-Tools für Visual Studio.
Ausführen von Apache Hive-Abfragen mit Visual Studio
Zum Erstellen und Ausführen von Hive-Abfragen stehen Ihnen zwei Möglichkeiten zur Auswahl:
- Erstellen von Ad-hoc-Abfragen.
- Erstellen einer Hive-Anwendung.
Erstellen einer Ad-hoc-Hive-Abfrage.
Ad-hoc-Abfragen können entweder im Modus Batch oder Interaktiv ausgeführt werden.
Öffnen Sie Visual Studio, und wählen Sie Ohne Code fortfahren aus.
Klicken Sie im Server-Explorer mit der rechten Maustaste auf Azure, klicken Sie auf Verbindung mit Microsoft Azure-Abonnement herstellen, und melden Sie sich an.
Erweitern Sie HDInsight, klicken Sie mit der rechten Maustaste auf den Cluster, in dem Sie die Abfrage ausführen möchten, und wählen Sie dann Write a Hive Query (Hive-Abfrage schreiben) aus.
Geben Sie die folgende Hive-Abfrage ein:
SELECT * FROM hivesampletable;
Klicken Sie auf Ausführen. Der Ausführungsmodus ist standardmäßig Interaktiv.
Um dieselbe Abfrage im Modus Batch auszuführen, wechseln Sie in der Dropdownliste von Interaktiv zu Batch. Die Schaltfläche für die Ausführung wechselt von Ausführen zu Übermitteln.
Der Hive-Editor unterstützt IntelliSense. Data Lake Tools für Visual Studio unterstützt das Laden von Remotemetadaten, wenn Sie Ihr Hive-Skript bearbeiten. Wenn Sie beispielsweise
SELECT * FROM
eingeben, listet IntelliSense alle vorgeschlagenen Tabellennamen auf. Wird ein Tabellenname angegeben, listet IntelliSense die Spaltennamen auf. Die Tools unterstützen die meisten Hive-DML-Anweisungen, Unterabfragen und integrierte UDFs. IntelliSense schlägt nur die Metadaten des Clusters vor, der auf der HDInsight-Symbolleiste ausgewählt ist.Wählen Sie auf der Symbolleiste für Abfragen (der Bereich unterhalb der Registerkarte „Abfrage“ und über dem Abfragetext) entweder Übermitteln oder den Pulldownmenü-Pfeil neben Übermitteln und dann aus der Pulldownliste Erweitert aus. Wenn Sie die zweite Option auswählen,
Konfigurieren Sie den Auftragsnamen, Argumente, zusätzliche Konfigurationen und das Statusverzeichnis im Dialogfeld Skript übermitteln, wenn Sie die Option für erweitertes Senden auswählen. Klicken Sie dann auf Senden.
Erstellen einer Hive-Anwendung
Führen Sie die folgenden Schritte aus, um eine Hive-Abfrage durch Erstellen einer Hive-Anwendung auszuführen:
Öffnen Sie Visual Studio.
Wählen Sie im Fenster Start die Option Neues Projekt erstellen aus.
Geben Sie im Fenster Neues Projekt erstellen im Feld Nach Vorlagen suchen die Zeichenfolge Hive ein. Wählen Sie dann Hive Application (Hive-Anwendung) und anschließend Weiter aus.
Geben Sie im Fenster Neues Projekt konfigurieren einen Projektnamen ein, wählen Sie den Speicherort für das neue Projekt aus, oder erstellen Sie ihn, und wählen Sie dann Erstellen aus.
Öffnen Sie die Datei Script.hql , die mit diesem Projekt erstellt wird, und fügen Sie dann die folgenden HiveQL-Anweisungen ein:
set hive.execution.engine=tez; DROP TABLE log4jLogs; CREATE EXTERNAL TABLE log4j Logs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '/example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Diese Anweisungen führen die folgenden Aktionen aus:
DROP TABLE
: Löscht die Tabelle, falls vorhanden.CREATE EXTERNAL TABLE
: Erstellt eine neue „externe“ Tabelle in Hive. Externe Tabellen speichern nur die Tabellendefinition in Hive. (Die Daten verbleiben an ihrem ursprünglichen Speicherort.)Hinweis
Externe Tabellen sollten Sie verwenden, wenn Sie erwarten, dass die zugrunde liegenden Daten aus einer externen Quelle aktualisiert werden, wie z.B. einem MapReduce-Auftrag oder einem Azure-Dienst.
Durch das Löschen einer externen Tabelle werden nicht die Daten, sondern nur die Tabellendefinitionen gelöscht.
ROW FORMAT
: Teilt Hive mit, wie die Daten formatiert werden. In diesem Fall werden die Felder in den einzelnen Protokollen durch Leerzeichen getrennt.STORED AS TEXTFILE LOCATION
: Teilt Hive mit, dass die Daten im Verzeichnis example/data als Text gespeichert sind.SELECT
: Wählt die Anzahl aller Zeilen aus, bei denen die Spaltet4
den Wert[ERROR]
enthält. Mit dieser Anweisung wird der Wert3
zurückgegeben, da dieser Wert in drei Zeilen enthalten ist.INPUT__FILE__NAME LIKE '%.log'
: Teilt Hive mit, dass nur Daten aus Dateien mit der Erweiterung „.log“ zurückgeben werden sollen. Diese Klausel schränkt die Suche auf die Datei sample.log ein, die die Daten enthält.
Wählen Sie auf der Symbolleiste der Abfragedatei (die der Symbolleiste der Ad-hoc-Abfrage ähnelt) den HDInsight-Cluster aus, den Sie für diese Abfrage verwenden möchten. Ändern Sie dann Interaktiv in Batch (falls erforderlich), und wählen Sie Übermitteln aus, um die Anweisungen als Hive-Auftrag auszuführen.
Die Hive-Auftragszusammenfassung wird mit Informationen zum aktiven Auftrag angezeigt. Verwenden Sie den Link Aktualisieren, um die Auftragsinformationen zu aktualisieren, bis der Auftragsstatus zu Abgeschlossen wechselt.
Wählen Sie Auftragsausgabe aus, um die Ausgabe dieses Auftrags anzuzeigen.
[ERROR] 3
wird angezeigt – dies ist der Wert, der von dieser Abfrage zurückgegeben wird.
Zusätzliches Beispiel
Das folgende Beispiel basiert auf der log4jLogs
-Tabelle, die in der vorherigen Prozedur, Erstellen einer Hive-Anwendungs erstellt wurde.
Klicken Sie in Server-Explorer mit der rechten Maustaste auf Ihren Cluster, und wählen Sie Hive-Abfrage schreiben aus.
Geben Sie die folgende Hive-Abfrage ein:
set hive.execution.engine=tez; CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC; INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
Diese Anweisungen führen die folgenden Aktionen aus:
CREATE TABLE IF NOT EXISTS
: Erstellt eine Tabelle, sofern diese noch nicht vorhanden ist. Da dasEXTERNAL
-Schlüsselwort nicht verwendet wird, erstellt diese Anweisung eine interne Tabelle. Interne Tabellen werden im Hive-Data Warehouse gespeichert und von Hive verwaltet.Hinweis
Anders als bei
EXTERNAL
Tabellen werden beim Löschen von internen Tabellen auch die zugrunde liegenden Daten gelöscht.STORED AS ORC
: Speichert die Daten im ORC-Format (Optimized Row Columnar). ORC ist ein stark optimiertes und effizientes Format zum Speichern von Hive-Daten.INSERT OVERWRITE ... SELECT
: Wählt die Zeilen aus derlog4jLogs
Tabelle, die[ERROR]
enthalten, und fügt dann die Daten in dieerrorLogs
Tabelle ein.
Ändern Sie Interaktiv falls erforderlich in Batch, und wählen Sie dann Übermitteln aus.
Um zu überprüfen, ob der Auftrag die Tabelle erstellt hat, wechseln Sie zum Server-Explorer, und erweitern Sie Azure>HDInsight. Erweitern Sie den HDInsight-Cluster, und erweitern Sie dann Hive-Datenbanken>Standard. Die Tabellen errorLogs und Log4jLogs werden aufgelistet.
Nächste Schritte
Wie Sie sehen, können Sie mit den HDInsight-Tools für Visual Studio mühelos mit Hive-Abfragen in HDInsight arbeiten.
Allgemeinere Informationen zu Hive in HDInsight finden Sie unter Was sind Apache Hive und HiveQL in Azure HDInsight?.
Informationen zu anderen Methoden zur Verwendung von Hadoop in HDInsight finden Sie unter Verwenden von MapReduce mit Apache Hadoop in HDInsight.
Weitere Informationen zu den HDInsight-Tools für Visual Studio finden Sie unter Herstellen einer Verbindung mit Azure HDInsight und Ausführen von Apache Hive-Abfragen mithilfe von Data Lake Tools für Visual Studio.