Groovy Baby – Datawarehousing mit Hive, Thrift und Groovy


Apaches Datawarehouse-System Hive lässt sich nicht nur über die Hive-Shell sondern auch remote über den Hiveserver abfragen. Dazu muss dieser mit geeigneten Rechten gestartet werden, ein lauffähiges Hadoop-System vorausgesetzt. Am besten ist es, man nutzt einen dedizierten Linux-Client als Hiveserver der sich dann mit der eigentlichen Hive-Installation verbindet. Im folgenden Beispiel setze ich die Installation von CDH4.1 voraus. Läuft erstmal der Hiverserver, ist die Hadoop-Distribution aber eher nebensächlich. Auf Port 10000 läst sich der Server starten mit

$ nohup hive --service hiveserver -p 10000 &

und sicher in den Hintergrund legen, wo er auf eingehende Nachrichten über das Thrift-Protokoll wartet. Auf dem Client muss Groovy lediglich die nötigen Hadoop und Hive-Bibliotheken
finden. Auf dem genutzten Ubuntu-System geschied dies am einfachsten über das hinzufügen der nötigen JAR-Pfade in der Datei

$ vi /etc/groovy/groovy-starter.conf

Folgende Zeilen müssen dazu hinzugefügt werden:

# Hadoop libraries
load /usr/lib/hadoop/lib/*.jar
load /usr/lib/hadoop-0.20-mapreduce/lib/*.jar
 
# hive libraries
load /usr/lib/hive/lib/*.jar

Danach ermöglich folgendes Groovy-Script die einfache Abfrage einer bestehenden Datenbank meine_datenbank und der Tabelle meine_tabelle mit:

1
2
3
4
5
6
7
8
9
10
11
12
import org.apache.hadoop.hive.service.*;
import org.apache.thrift.protocol.*;
import org.apache.thrift.transport.*;
 
transport = new TSocket("localhost",10000);
protocol = new TBinaryProtocol(transport);
client = new HiveClient(protocol);
transport.open();
client.execute("SELECT * FROM meine_datenbank.meine_tabelle LIMIT 10");
data = client.fetchAll();
println data.toString();
transport.close();

Nützlich ist bei eigenen Experimenten mit Thrift, Hive und Groovy ist auch die Groovy-Shell, welche interaktive Abfragen und Autovervollständigung ermöglicht.

Schreibe einen Kommentar


(required)