Ruby on Rails: HBase Zugriff via REST mit HTTParty

Beschreibung
Ziel ist es mittels dem HTTParty Ruby Plugin über den HBase REST Server: Stargate auf eine HBase Datenbank zuzugreifen. Bei dem HTTParty Plugin handelt es sich um einen fertigen Rest Client für Ruby; auch zu finden auf Github.


Voraussetzungen
Eine laufender HBase Datenbank Installation z.B. wie hier beschrieben, sowie eine laufende Rails 3 Installation.

Vorbereitungen HBase
HBase Datenbank starten. Erst in das HBase Installations Verzeichnis wechseln.

Dort die HBase Datenbank starten.

Daraufhin wird in der Datenbank eine Tabelle für die Entwicklungsbeispiele angelegt.

Diese Tabelle wird mit ein paar Dummy Datensätzen gefüllt.

Vorbereitung Rails
Für das Beispiel wird ein neues Rails Projekt erzeugt.

Zusätzlich einen Controller plus dazugehörigen Index Views anlegen.

Installation HTTParty
Im Gemfile des Rails Projekt wird die folgende Zeile hinzugefügt.

Abschließend wird das HTTParty PlugIn installiert.

Und dann den lokalen Webrick Webserver des Rails Projektes neu starten.

Zugriff auf die Rails Web-Anwendung bekommt man über die URL:


HBase REST Server starten
Damit die HBase Datenbank per REST erreichbar ist, muss noch der mit gelieferte REST Server Stargate gestartet werden. Dazu muss in das HBase Verzeichnis gewechselt werden.

Und dort die HBase ist der REST Server mit zu starten.

Der Stargate REST Server läuft die ganze Zeit auf der Kommandozeile mit und kann mit der Tastenkombination ctrl + c wieder abgebrochen werden.

Tabellenliste abfragen (GET)
Mit der Methode HTTParty.get() werden via REST der Informationen vom REST Server angefordert. In diesem Fall wird ein Liste der Tabellen aus der HBase Datenbank angefordert.
Edit: app/controller/hbase_controller.rb

Die Rückgabe in der Instanzvariable @hbaseTableList ist eine einfache Zeichen Kette, in welcher die Werte mit einem Leerzeichen getrent sind.

Die Ausgabe kann einfach in dem View erfolgen.
Edit: app/views/hbase/index.html.erb


Tabellen Schema im JSON Format (GET)
Die URL für das Tabellen Schema lautet jeweils: http://localhost:8080/myTable/schema
Edit: app/controller/hbase_controller.rb

Wichtig ist hier bei der :header, denn dort wird mit Accecpt übergeben um welchen Format es sich handelt. Entweder JSON: "application/json" oder XML: "text/xml" oder andere Formate welche vom Stargate Server akzeptiert werden.

Tabelle mit XML erzeugen (POST/PUT)
Als erstes muss eine XML Struktur erzeugt werden, diese wird später an die REST API mit der POST oder PUT Methode übergeben. Die URL an welche das POST oder PUT gesendet wird muss schon den neuen Tabellennamen enthalten.
Beispiel: http://localhost:8080/myTableNo2/schema

Edit: app/controller/hbase_controller.rb


Tabelle löschen (DELETE)
Eine Tabelle kann leicht über den Aufruf der entsprechenden URL wie http://localhost:8080/myTable2/schema und die REST Anweisung DELETE gelöscht werden.

Edit: app/controller/hbase_controller.rb


Alle Zeilen einer Tabellen als JSON auslesen (GET)
Die Zeilen (Rows) einer Tabellen können einfach über die URL http://localhost:8080/myTable/* angezeigt bzw. ausgelesen werden.
Edit: app/controller/hbase_controller.rb

Zur Ausgabe die JSON Rückgabe parsen.
Edit: app/views/hbase/index.html.erb


Neue Zeile mit XML erstellen (POST/PUT)
Um eine neue Zeile (Row) in einer Tabelle zu erzeugen muss im ersten Schritt das XML mit den Werten erstellt werden. Diese XML wird anschließend via REST mit der Methode POST oder PUT an den REST Server übergeben.

Achtung: Die Werte wie: Key, Column und Value müssen vor der Übergabe an die HBase Datenbank mit Base64 kodiert werden.

Edit: app/controller/hbase_controller.rb


Weitere Informationen
Eine Dokumentation wie alle Anweisungen an den HBase REST Server Stargate auszusehen haben ist hier zu finden:
http://wiki.apache.org/hadoop/Hbase/Stargate

(Visited 33 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.