Big Data Hands On Part 2: Strukturierte Daten mit Hive

16. Juni 2014

Nachdem im vorherigen Beitrag die Installation einer HortonWorks Umgebung vorgestellt wurde, zeigt dieser Beitrag Anwendungsmöglichkeiten von Hive auf.
Das Hadoop Hive Modul ermöglicht DDL und DML Befehle auf Daten im verteilten Dateisystem in T-SQL ähnlicher Syntax.

Für eine Einführung wird zunächst die Hive-Konsole im Verzeichnis “c:hdphive-0.12.0.2.0.0.6-0009in” via hive.cmd aufgerufen. Nach dem öffnen der Hive-Konsole wird eine Tabelle "u_data" erstellt, die Syntax ähnelt der SQL Syntax. Besonderheiten bei HiveQL sind abweichende Datentypen wie etwa String. Im Weiteren muss ein Trennzeichen “;” beim Erstellen der Tabelle angegeben werden, dieses ist abgesehen von wenigen Ausnahmen optional in T-SQL.

demo1

Beim Erstellen kann auch ein Column Delimiter angegeben werden:

ROW FORMAT DELIMITED FIELDS TERMINATED BY "	"

In diesem Beispiel wird TAB als Trennzeichen verwendet. Nach dem erfolgreichen Erstellen der Zieltabelle kann diese mit Daten befüllt werden, in diesem Beispiel rund 100.000 Datensätze mit Kinofilmbewertungen.

Die LOAD DATA Funktionalität ähnelt dem SQL Server Tool bcp.exe, hierüber können Daten aus Textdateien in Tabellen geladen werden. Nach erfolgreichem Erstellen der Tabelle wird diese beladen, die Syntax zum Beladen lautet:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename;

Der Platzhalter “filepath” entspricht dem Pfad zur Datei z.B. "C:DemoDemo.csv" und muss entsprechend ersetzt werden.

OVERWRITE entspricht einem TRUNCATE vor der Beladung.

Die korrekte Beladung kann über einen SELECT Befehl geprüft werden:

SELECT COUNT (*) FROM u_data

Der Jobtracker gibt Auskunft:

demo1_1

Die Ausgabe erfolgt über die Hive-Konsole (siehe Markierung am unteren Ende)

demo2

Einbindung von Hive Daten in SSIS

Mit dem Hive ODBC Treiber ist es nun möglich die Daten der Tabelle in Excel auszuwerten, oder in einem SSIS Datenflusstask zur weiteren Bearbeitung zu nutzen.

Hierzu muss der Treiber konfiguriert werden im Hadoop Installationsverzeichnis unter “C:hdphive-0.12.0.2.0.6.0-0009conf” findet sich die Konfigurationsdatei hive-site.xml, hier ist der thrift Port für die Verbindung zu Hive hinterlegt.

<property>

  <name>hive.server2.thrift.http.port</name>

  <value>10001</value>

  <description>Port number when in HTTP mode.</description>

</property>

Username und Password entsprechen den bei der Installation gesetzten Werten. Für Hadoop 2.1 muss Server Type auf “Hive Server 2” gesetzt werden. Die Authentifizierung erfolgt über Username und Password.

image

Innerhalb eines SSIS Datenfluss Tasks kann nun die konfigurierte ODBC als Quelle genutzt werden.

image

Die recht lange Abfragezeit von rund 30 Sekunden für ein SELECT auf rund 100.000 Datensätzen ist den vergleichsweise knapp bemessenen Ressourcen der VM geschuldet. Die laufenden Hadoop Services fordern hier Ihren Tribut an die verfügbaren Ressourcen.

image

Ein folgender Artikel betrachtet Hadoop Pig und dem Umgang mit unstrukturierten Daten.

Fazit

Über wenige simple Konsolenbefehle kann mit Hive ein Flatfile in eine Staging Tabelle geladen werden. Wer allerdings eine GUI wie etwa BIDS oder BI-DataTools für einen ETL Editor bevorzugt, der sollte sich in Hive an eine Konsole gewöhnen. Über den ODBC Treiber können Hive Daten aus der Hadoop Welt etwa in Excel oder SSIS verwendet werden.

In diesem Kontext lässt sich auch über Hybrid Data Warehouse Szenarien nachdenken, so könnten Big Data Datenbestände in vorhandene DWH Systeme eingebunden werden. Neben der reinen Datenhaltung ermöglicht Hadoop mit Pig auch Transformationen an Datenbestände, dies gilt für strukturierte und unstrukturierte Daten. So könnten etwa PDF Dateien nach bestimmten Kriterien durchsucht werden und die Ergebnisse in Form von strukturierten Daten zugänglich gemacht werden.