Einführung
In diesem Lab stehen die Konfiguration und die grundlegenden Operationen von Hive im Mittelpunkt. Es richtet sich an Lernende mit SQL-Grundkenntnissen und vermittelt die Architektur, die grundlegende Bereitstellung und die Verwendung von Hive.
Geben Sie den Beispielcode im Dokument möglichst selbst ein, anstatt ihn einfach zu kopieren und einzufügen. So machen Sie sich besser mit dem Code vertraut. Wenn Sie auf Probleme stoßen, lesen Sie die Dokumentation sorgfältig durch oder wenden Sie sich an das Forum, um Hilfe zu erhalten und sich auszutauschen.
Einführung in Hive
In diesem Abschnitt lernen Sie, wie Apache Hive eine SQL-Schnittstelle zum Abfragen und Analysieren großer, in Hadoop gespeicherter Datensätze bereitstellt. Im Folgenden erhalten Sie einen Überblick über die Architektur und die wichtigsten Funktionen von Hive:
Hive-Architektur
- Komponenten: Hive umfasst
HCatalogfür die Verwaltung von Tabellen und Speicher sowieWebHCat, mit dem Sie MapReduce-Aufgaben und Pig-Abfragen ausführen oder über eine REST-API mit Hive-Metadaten interagieren können. - Funktionen:
- Hive unterstützt SQL-Abfragen für Data-Warehouse-Aufgaben wie ETL, Datenanalyse und Berichterstellung.
- Die Daten werden in Speichersystemen wie HDFS oder HBase abgelegt. Abfragen werden von Berechnungsmodulen wie Tez, Spark oder MapReduce ausgeführt.
- Hive unterstützt prozedurale Sprachen, HPL-SQL und Unterabfragen. Für die Unterstützung kommen Hive LLAP, YARN und Slider zum Einsatz.
Grundlegende Dateneinheiten in Hive
- Datenbank: Ein Namensraum, der Namenskonflikte verhindert und die Sicherheit erhöht.
- Tabelle: Eine Dateneinheit mit einheitlichem Schema. Die Tabelle
page_viewskann beispielsweise Spalten wietimestamp,useridundpage_urlenthalten. - Partition: Teilt Daten anhand von Schlüsseln in Partitionen auf, damit sie effizient abgerufen werden können.
- Bucket: Teilt partitionierte Daten anhand von Hash-Werten in Buckets auf, um Abfragen effizienter zu machen.
Hive-Datentypen
- Hive unterstützt primitive und komplexe Datentypen. Weitere Informationen finden Sie in der Dokumentation zu Hive-Datentypen.
Hive ist für Data-Warehouse-Aufgaben und nicht für die Online-Transaktionsverarbeitung (OLTP) ausgelegt. Im Mittelpunkt stehen Skalierbarkeit, Leistung, Zuverlässigkeit und Fehlertoleranz. Hive unterstützt verschiedene Eingabeformate und lässt sich durch Konnektoren für unterschiedliche Formate erweitern. Wenn Sie die Architektur, Dateneinheiten und Datentypen von Hive verstehen, können Sie seine Funktionen für Big-Data-Analysen gezielt einsetzen.
Hive installieren und bereitstellen
In diesem Abschnitt sehen Sie sich die Installation und Bereitstellung von Hive an. Dazu gehören der Verzeichnisaufbau, Umgebungsvariablen, der Metastore und Systemparameter.
Wechseln Sie zunächst zum Benutzer hadoop, um die folgenden Schritte auszuführen. Öffnen Sie dazu auf dem Desktop das Xfce-Terminal mit einem Doppelklick und geben Sie diesen Befehl ein:
su - hadoop
Hinweis: Das Passwort für den Benutzer hadoop lautet hadoop.
Laden Sie anschließend mit dem Befehl wget eine stabile Hive-Version herunter. In diesem Lab verwenden wir Hive in Version 2.3.3:
sudo wget https://labexfile.oss-us-west-1.aliyuncs.com/courses/144/apache-hive-2.3.3-bin.tar.gz
Entpacken Sie danach das heruntergeladene Installationspaket. Geben Sie dazu im Terminal folgenden Befehl ein:
tar -zxvf apache-hive-2.3.3-bin.tar.gz
Verschieben Sie das entpackte Verzeichnis mit sudo nach /opt. Ohne sudo haben Sie möglicherweise keine Schreibberechtigung für /opt:
sudo mv /home/hadoop/apache-hive-2.3.3-bin /opt/hive-2.3.3
Ändern Sie anschließend den Besitzer des Hive-Verzeichnisses und die zugehörige Gruppe in hadoop. Geben Sie dazu im Terminal folgenden Befehl ein:
sudo chown -R hadoop:hadoop /opt/hive-2.3.3
Hinweis: Sie können ein weiteres Terminal öffnen, um die obigen Befehle mit sudo auszuführen.
labex:~/ $ ls -al /opt/
total 24
drwxrwxr-x 10 hadoop hadoop 4096 Mar 3 12:01 hive-2.3.3
...
Umgebungsvariablen festlegen
In diesem Abschnitt legen Sie die Hive-Umgebungsvariablen fest, damit HIVE_HOME auf das Installationsverzeichnis von Hive verweist.
Öffnen Sie zunächst die Datei .bashrc des Benutzers hadoop mit dem Editor vim. Geben Sie dazu im Terminal folgenden Befehl ein:
vim /home/hadoop/.bashrc
Fügen Sie am Ende der Datei folgende Zeilen ein. Passen Sie PATH an die tatsächliche Umgebung dieses Labs an. Der Ausdruck $PATH übernimmt den bereits vorhandenen Inhalt. Ergänzen Sie die Umgebungsvariable PATH am Ende direkt um :$HIVE_HOME/bin:
export HIVE_HOME=/opt/hive-2.3.3
export PATH=$PATH:$HIVE_HOME/bin
Speichern Sie die Datei und beenden Sie den Editor. Aktivieren Sie anschließend die Umgebungsvariablen mit dem Befehl source.
In diesem Lab ist Hive bereits vorinstalliert. Sie müssen die Umgebungsvariablen daher nicht mit source aktivieren. Bei einer eigenen Installation hängt es vom jeweiligen Fall ab, ob dieser Schritt erforderlich ist.
Konfiguration festlegen
In diesem Abschnitt überprüfen Sie die vorinstallierte Hive-Konfiguration und erstellen die für die Prüfungen benötigten Konfigurationsdateien.
Metastore konfigurieren
Bevor Sie Hive verwenden können, müssen Sie den Metastore einrichten. Standardmäßig speichert Hive Metainformationen in einer eingebetteten Derby-Datenbank. Der Speicherort auf der Festplatte wird durch die Konfigurationseinstellung javax.jdo.option.ConnectionURL in der Hive-Konfigurationsdatei conf/hive-default.xml festgelegt. Standardmäßig lautet dieser Speicherort ./metastore_db.
In diesem Lab verwenden wir MySQL als Metadatenspeicher. Ändern Sie daher die Hive-Konfigurationsdatei.
Erstellen und öffnen Sie die dafür vorgesehene Konfigurationsdatei mit dem Editor vim:
vim /opt/hive-2.3.3/conf/hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive_metastore1?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser1</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123qweQWE...</value>
</property>
</configuration>
Speichern Sie die Datei, nachdem Sie die obigen Konfigurationseinstellungen eingetragen haben, und beenden Sie den Editor.
MySQL-Datenbank erstellen
Starten Sie den MySQL-Server mit sudo mysql und erstellen Sie die Datenbank hive_metastore:
CREATE DATABASE hive_metastore1;
CREATE USER 'hiveuser1'@'localhost' IDENTIFIED BY '123qweQWE...';
GRANT ALL PRIVILEGES ON hive_metastore1.* TO 'hiveuser1'@'localhost';
FLUSH PRIVILEGES;
exit;
Laden Sie anschließend den MySQL-JDBC-Treiber herunter und kopieren Sie ihn in das Verzeichnis /opt/hive-2.3.3/lib:
cp /usr/local/hive/lib/mysql-connector-j-8.3.0.jar /opt/hive-2.3.3/lib
Hive-Systemparameter festlegen
Nachdem Sie den Metastore konfiguriert haben, legen Sie interne Hive-Konfigurationseinstellungen fest. Damit geben Sie unter anderem den Hadoop-Speicherort und den Pfad zur internen Konfigurationsdatei an.
Kopieren Sie zunächst mit dem Befehl cp die Vorlage der Einstellungen, damit die Konfiguration wirksam wird.
Geben Sie dazu im Terminal folgenden Befehl ein:
cp /opt/hive-2.3.3/conf/hive-env.sh.template /opt/hive-2.3.3/conf/hive-env.sh
Öffnen Sie anschließend die Datei hive-env.sh mit dem Editor vim:
vim /opt/hive-2.3.3/conf/hive-env.sh
Legen Sie in Zeile 48 für HADOOP_HOME den Installationspfad von Hadoop fest:
HADOOP_HOME=/home/hadoop/hadoop
Speichern Sie die Datei, nachdem Sie die obigen Konfigurationseinstellungen eingetragen haben, und beenden Sie den Editor.
Metastore initialisieren
In diesem Abschnitt initialisieren Sie den Hive-Metastore und starten die von Hive benötigten Hadoop-Dienste.
Da die später verwendeten Daten in HDFS gespeichert werden, müssen Sie HDFS vorher starten. Geben Sie dazu im Terminal folgende Befehle ein:
start-dfs.sh
start-yarn.sh
Prüfen Sie den Dienststatus mit dem Befehl jps:
hadoop:~/ $ jps [17:31:43]
8960 Jps
3153 NodeManager
2823 SecondaryNameNode
3017 ResourceManager
2570 DataNode
2428 NameNode
Wenn Sie Hadoop zum ersten Mal verwenden, müssen Sie die Hadoop-Daten löschen und Hadoop mit hdfs namenode -format initialisieren.
In diesem Lab haben wir Hive in der Vorinstallation bereits mit der oben genannten Datenbank initialisiert. Wenn Sie Hive initialisieren möchten, das Sie gerade heruntergeladen haben, verwenden Sie den folgenden Befehl:
/opt/hive-2.3.3/bin/schematool -initSchema -dbType mysql
Initialization script completed
schemaTool completed
Wenn Sie das gerade heruntergeladene Hive zum ersten Mal initialisieren, müssen Sie den Pfad von HIVE_HOME in ~/.bashrc auf den Pfad der gerade installierten Hive-Version ändern und die Datei mit source aktivieren. Wir raten davon ab, da sich alle folgenden Hive-Tests in diesem Lab auf die vorinstallierte Hive-Version beziehen.
Wenn die Meldung anzeigt, dass die Initialisierung abgeschlossen ist, können Sie mit dem Befehl hive die Hive-Befehlszeile öffnen. Geben Sie dazu im Terminal folgenden Befehl ein:
hive
Hinweis: Wenn Sie hive direkt eingeben, landen Sie in der Shell der vorinstallierten Hive-Version. Geben Sie den absoluten Pfad an, um die Shell der gerade eingerichteten Hive-Version zu öffnen.
Hive Session ID = 3eee2693-175d-4452-82d2-47f1b639d9d5
Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-3.1.3.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Hive Session ID = 68d0d345-92c3-4eb1-8393-7ee34f56363f
hive>
Grundlegende Hive-Operationen
In diesem Abschnitt lernen Sie grundlegende Operationen mit Hive-Tabellen kennen. Alle Hive-Anweisungen finden Sie auch im Language Manual.
Tabelle erstellen
Besorgen Sie sich zunächst einige Daten. Bei den Daten in diesem Lab-Abschnitt handelt es sich hauptsächlich um eine Protokolldatei, die einen NginX-Server simuliert. Damit lassen sich die Seitenaufrufe einer Website analysieren.
Öffnen Sie erneut ein Terminal und geben Sie die folgenden Befehle ein, um die Beispieldaten herunterzuladen:
su hadoop
cd ~
wget http://labfile.oss-cn-hangzhou.aliyuncs.com/courses/567/log_example.csv
Laden Sie die Datei anschließend nach HDFS hoch:
hdfs dfs -mkdir -p /user/data/staging/page_view
hdfs dfs -put /home/hadoop/log_example.csv /user/data/staging/page_view
Erstellen Sie nach dem Bereitstellen der Daten eine Tabelle. Um für die obigen Daten eine Tabelle page_view anzulegen, geben Sie in der Hive-Befehlszeile folgende Anweisung ein:
CREATE TABLE page_view(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
STORED AS SEQUENCEFILE;
In diesem Beispiel ist jeder Tabellenspalte ein passender Datentyp zugewiesen. Außerdem können Sie Kommentare auf Spalten- und Tabellenebene hinzufügen. Die Klausel PARTITIONED BY definiert Partitionierungsspalten, die von den Datenspalten getrennt sind. Die Partitionierungsspalten werden nicht zusammen mit den Datenspalten gespeichert. Wenn Sie die Partitionierung auf diese Weise festlegen, dient ein Zeilenumbruch als Trennzeichen zwischen den Zeilen.
Wenn die Daten nicht in diesem Format vorliegen, können Sie das Feldtrennzeichen wie im folgenden Beispiel festlegen:
Die folgende Anweisung dient nur zur Veranschaulichung. Geben Sie sie nicht in der hive-Shell ein.
CREATE TABLE page_view1(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '1'
STORED AS SEQUENCEFILE;
Das Zeilentrennzeichen wird durch das Trennzeichen im Hadoop-System und nicht durch Hive festgelegt. Daher können Sie das Zeilentrennzeichen nicht manuell ändern.
Üblicherweise werden Tabellen, deren Spaltendaten festgelegt sind, in Buckets gespeichert. Das erleichtert effiziente Stichprobenabfragen für Datensätze. Ohne Buckets sind zwar zufällige Stichproben aus der Tabelle möglich, aber beim Durchsuchen aller Daten lassen sich keine effizienten Stichproben erzielen. Das folgende Beispiel zeigt, wie Sie die Tabelle page_view nach der Spalte userid in Buckets aufteilen.
Die folgende Anweisung dient nur zur Veranschaulichung. Geben Sie sie nicht in der hive-Shell ein.
CREATE TABLE page_view2(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '1'
COLLECTION ITEMS TERMINATED BY '2'
MAP KEYS TERMINATED BY '3'
STORED AS SEQUENCEFILE;
Im obigen Beispiel wird die Spalte userid mithilfe einer Hashfunktion in 32 Buckets aufgeteilt. Innerhalb jedes Buckets werden die Daten aufsteigend nach viewTime sortiert. Durch diese Datenorganisation können Benutzer effizient Stichproben aus den gruppierten Spalten ziehen, hier aus der Spalte userid. Die Sortierung ermöglicht es Datenverantwortlichen außerdem, Abfragen mithilfe besserer Datenstrukturen effizienter auszuwerten.
Die folgende Anweisung dient nur zur Veranschaulichung. Geben Sie sie nicht in der hive-Shell ein.
CREATE TABLE page_view3(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Friends ARRAY<BIGINT>, properties MAP<STRING, STRING>,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '1'
COLLECTION ITEMS TERMINATED BY '2'
MAP KEYS TERMINATED BY '3'
STORED AS SEQUENCEFILE;
Im obigen Beispiel werden die Zeilen anhand von Spaltennamen und Datentypen definiert. Das ähnelt den Typdefinitionen in anderen Programmiersprachen. Beachten Sie, dass Hive bei Tabellen- und Spaltennamen nicht zwischen Groß- und Kleinschreibung unterscheidet. Der Text IP Address of the User und die Klausel COMMENT zeigen, dass Sie Kommentare sowohl auf Spalten- als auch auf Tabellenebene hinzufügen können. Die Klausel PARTITIONED BY definiert Partitionierungsspalten, die von den Datenspalten getrennt sind. Wie bereits erwähnt, speichern diese Spalten selbst keine Daten. Mit CLUSTERED BY legen Sie fest, welche Spalte für die Aufteilung in wie viele Buckets verwendet wird. Die Klausel ROW FORMAT DELIMITED gibt an, wie die Zeilen einer Hive-Tabelle gespeichert werden. Bei durch Trennzeichen begrenzten Formaten legt sie fest, welches Zeichen Felder voneinander trennt, welches Zeichen Elemente einer Collection (Array oder Map) voneinander trennt und welches Zeichen Map-Schlüssel voneinander trennt. Die angegebenen Zahlen entsprechen ASCII-Codes. STORED AS SEQUENCEFILE gibt an, dass die Daten in binärer Form in HDFS gespeichert werden, und zwar im Hadoop-Dateiformat SequenceFile. Die Einstellungen in den Klauseln ROW FORMAT und STORED AS entsprechen den aktuell verwendeten Standardwerten von Hive. Deshalb haben wir sie in der Anweisung zum Erstellen der Tabelle zu Beginn nicht ausdrücklich angegeben.
Tabellen und Partitionen anzeigen
Um vorhandene Tabellen in Ihrem Warehouse aufzulisten, verwenden Sie folgende Anweisung:
SHOW TABLES;
Wenn viele Tabellen vorhanden sind, gibt die Anweisung eine große Menge an Informationen zurück. Schränken Sie die Ergebnisse ein, indem Sie ein Präfix angeben. Um beispielsweise Tabellen mit dem Präfix page aufzulisten, verwenden Sie folgende Anweisung:
SHOW TABLES 'page.*';
Die Suchregeln entsprechen in dieser Anweisung der Syntax regulärer Ausdrücke. Der Punkt (.) steht für ein Platzhalterzeichen.
Um die Partitionen einer Tabelle aufzulisten, verwenden Sie folgende Anweisung. Bei einer nicht partitionierten Tabelle wird keine Information zurückgegeben:
SHOW PARTITIONS page_view;
Mit der Anweisung DESCRIBE listen Sie die Spalten einer Tabelle und deren Datentypen auf:
DESCRIBE page_view;
Um zusätzlich zu den Spalten alle weiteren Eigenschaften der Tabelle aufzulisten, fügen Sie das Schlüsselwort EXTENDED hinzu. Dadurch werden viele Informationen ausgegeben. Diese Option wird üblicherweise zur Fehlersuche verwendet:
DESCRIBE EXTENDED page_view;
Tabelle ändern
Um eine vorhandene Tabelle umzubenennen, verwenden Sie die Anweisung ALTER TABLE mit RENAME TO. Wenn der neue Tabellenname bereits vergeben ist, wird ein Fehler zurückgegeben. Die folgende Anweisung dient nur als Beispiel. Führen Sie sie nicht aus, da Sie die Tabelle page_view im nächsten Abschnitt benötigen:
ALTER TABLE page_view RENAME TO new_page_view;
Sehen Sie sich das Ergebnis an:
hive> ALTER TABLE page_view RENAME TO new_page_view;
OK
Time taken: 0.124 seconds
hive> show tables;
OK
new_page_view
...
Time taken: 0.021 seconds, Fetched: 4 row(s)
Sie können auch die Spalten einer vorhandenen Tabelle umbenennen. Beachten Sie dabei, dass Sie denselben Spaltentyp verwenden und für jede vorhandene Spalte einen Eintrag angeben müssen:
ALTER TABLE new_page_view REPLACE COLUMNS (viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ipaddr STRING COMMENT 'IP Address of the User');
Außerdem können Sie einer vorhandenen Tabelle neue Spalten hinzufügen:
ALTER TABLE new_page_view ADD COLUMNS (new_column INT COMMENT 'a new int column');
Beachten Sie, dass Schemaänderungen, etwa das Hinzufügen einer Spalte, das Schema der älteren Partitionen der Tabelle beibehalten. So wird verhindert, dass die Tabelle nachträglich partitioniert wird. Abfragen, die auf diese Spalten zugreifen und für ältere Partitionen ausgeführt werden, geben für die neuen Spalten implizit null oder die angegebenen Standardwerte zurück.
Tabellen und Partitionen löschen
Hive ist als Data-Warehouse-System ausgelegt. Deshalb sollten Daten möglichst nicht gelöscht werden. Das Löschen einer Tabelle ist daher etwas umständlich. Wenn Sie eine Tabelle mit dem Befehl DROP löschen, werden implizit auch alle für diese Tabelle erstellten Indizes gelöscht.
Das folgende Beispiel löscht eine Tabelle. Führen Sie es in diesem Lab nicht aus:
DROP TABLE new_page_view;
Daten laden und abfragen
In diesem Abschnitt laden Sie bereitgestellte Daten in eine partitionierte Hive-Tabelle und fragen anschließend das Ergebnis ab.
Daten laden
Es gibt mehrere Möglichkeiten, Daten in eine Hive-Tabelle zu laden. Sie können externe Tabellen erstellen, die auf bestimmte Speicherorte in HDFS verweisen. Bei dieser Vorgehensweise kopieren Sie die Datendatei mit dem HDFS-Befehl put oder copy an den angegebenen Speicherort und erstellen eine Tabelle, die auf diesen Speicherort verweist. In der Tabelle werden alle relevanten Informationen zum Zeilenformat hinterlegt.
Nach dem Erstellen der Tabelle können Sie die Daten umwandeln und in eine andere Hive-Tabelle einfügen. Wir haben die Datei log_example.csv bereits zu Beginn nach HDFS hochgeladen und sie in page_view umbenannt. Um die Daten in die entsprechende Partition der Tabelle page_view zu laden, gehen Sie folgendermaßen vor.
Erstellen Sie zunächst eine externe Tabelle und verknüpfen Sie sie mit der angegebenen Datei:
CREATE EXTERNAL TABLE page_view_stg(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User',
Country STRING COMMENT 'country of origin')
COMMENT 'This is the staging page view table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '44' LINES TERMINATED BY '\n' STORED AS TEXTFILE
LOCATION '/user/data/staging/page_view';
Erstellen Sie danach eine Tabelle page_view, in der die Daten endgültig gespeichert werden:
CREATE TABLE page_view(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
STORED AS SEQUENCEFILE;
Für diesen kleinen Übungsdatensatz ist kein verteilter YARN-Auftrag erforderlich. Konfigurieren Sie für diese Hive-Sitzung den lokalen Job-Runner von Hadoop, damit der Einfügevorgang in der Lab-VM zuverlässig ausgeführt wird:
SET mapreduce.framework.name=local;
Fügen Sie abschließend die Daten aus der externen Tabelle in die Tabelle page_view ein:
FROM page_view_stg pvs
INSERT OVERWRITE TABLE page_view
PARTITION(dt='2015-05-17', country='us')
SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, pvs.ip
WHERE pvs.country = 'us';
Der lokale Auftrag sollte nach wenigen Sekunden abgeschlossen sein und die passenden Zeilen in die Partition von page_view laden.
...
Loading data to table default.page_view partition (dt=2015-05-17, country=us)
MapReduce Jobs Launched:
Stage-Stage-1: HDFS Read: ... HDFS Write: ... SUCCESS
Total MapReduce CPU Time Spent: 0 msec
OK
Time taken: ... seconds
Einfache Abfrage
Nach dem Einfügen der Daten können Sie eine einfache Abfrage ausführen. Sie ähnelt einer gewöhnlichen SQL-Anweisung. Geben Sie die folgende Anweisung in der Hive-Befehlszeile ein:
SELECT * FROM page_view WHERE userid = 0 LIMIT 10;
Die zurückgegebenen Informationen enthalten die abgefragten Datensätze:
hive> select * from page_view;
OK
NULL 490 /downloads/product_1 /archives/webroot 217.168.17.5 2015-05-17 us
NULL 490 /downloads/product_2 /archives/webroot 217.168.17.5 2015-05-17 us
NULL 3316 /downloads/product_2 /archives/webroot 217.168.17.5 2015-05-17 us
...
Dienste beenden
In diesem Abschnitt beenden Sie Hive und stoppen die Hadoop-Dienste. Weitere Informationen finden Sie in den folgenden Ressourcen:
Wenn Sie Hive nicht mehr verwenden, beenden Sie die Hive-Befehlszeile mit dem Befehl quit:
quit;
Beenden Sie anschließend auch die HDFS-Dienste. Geben Sie dazu im Terminal folgende Befehle ein:
stop-yarn.sh
stop-dfs.sh
Zusammenfassung
In diesem Lab haben Sie die Architektur, Installation und Bereitstellung von Hive sowie grundlegende HQL-Anweisungen kennengelernt. Außerdem haben Sie anhand der Beispieldaten gelernt, wie Sie Daten importieren.
Die wichtigsten Themen waren:
- Hive-Architektur
- Grundlegende Dateneinheiten in Hive
- Hive bereitstellen
- Hive-Abfragesprache HQL
Hive ist ein Data-Warehouse-Softwarepaket, dessen Funktionen es noch weiter zu erkunden gilt. Machen Sie es sich zur Gewohnheit, technische Unterlagen aktiv durchzuarbeiten, und setzen Sie Ihr Lernen mit den folgenden Kursen fort.



