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.