You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by Apache Wiki <wi...@apache.org> on 2008/05/12 22:43:06 UTC

[Hadoop Wiki] Update of "Hbase/JRuby" by Tim Dysinger

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.

The following page has been changed by Tim Dysinger:
http://wiki.apache.org/hadoop/Hbase/JRuby

New page:
== Accessing HBase trunk from JRuby 1.1.1 ==

This page describes the process of connecting to HBase from JRuby.  The code mostly follows the [http://wiki.apache.org/hadoop/Hbase/FAQ#1 Can someone give an example of basic API-usage going against hbase?] example listed in the HBase FAQ.

== Start HBase ==

{{{
bin/hbase master start
}}}

== Get JRuby 1.1.1 ==

{{{
curl -O http://repo1.maven.org/maven2/org/jruby/jruby-complete/1.1.1/jruby-complete-1.1.1.jar
}}}
-or-
{{{
wget http://repo1.maven.org/maven2/org/jruby/jruby-complete/1.1.1/jruby-complete-1.1.1.jar
}}}

== Set your CLASSPATH ==

{{{
export CLASSPATH=`java -jar jruby-complete-1.1.1.jar -e "puts Dir.glob('{.,build,lib}/*.jar').join(':')"`
}}}


== The Code ==

Once you've got that set it's as simple as just translating the Java on the FAQ page to JRuby.

The code below creates a table, puts some data in it, fetches that data back out and then deletes the table.

Save and run the example as "helloworld.rb" and run it with 'jruby' from the base of HBase svn trunk.

{{{
java -jar jruby-complete-1.1.1.jar helloworld.rb
}}}


or open an interactive shell 'jirb' and paste it in

{{{
java -jar jruby-complete-1.1.1.jar -S jirb
}}}

{{{
#!/usr/bin/env jruby

include Java
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.HColumnDescriptor
import org.apache.hadoop.hbase.HConstants
import org.apache.hadoop.hbase.HTableDescriptor
import org.apache.hadoop.hbase.client.HBaseAdmin
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.io.BatchUpdate
import org.apache.hadoop.io.Text

conf = HBaseConfiguration.new
tablename = "test"
tablename_text = Text.new(tablename)
desc = HTableDescriptor.new(tablename)
desc.addFamily(HColumnDescriptor.new("content:"))
desc.addFamily(HColumnDescriptor.new("anchor:"))
admin = HBaseAdmin.new(conf)
if admin.tableExists(tablename_text)
  admin.disableTable(tablename_text)
  admin.deleteTable(tablename_text) 
end
admin.createTable(desc)
tables = admin.listTables
table = HTable.new(conf, tablename_text)
row = Text.new("row_x")
b = BatchUpdate.new(row)
b.put(Text.new("content:"), "some content")
table.commit(b)
data = table.get(row, Text.new("content:"))
data_str = java.lang.String(data, "UTF8")
print "The fetched row contains the value '#{data_str}'"
admin.deleteTable(desc.getName)
}}}