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 stack: http://wiki.apache.org/hadoop/Hbase/Shell The comment on the change is: Notes on shell ------------------------------------------------------------------------------ This page describes the JRuby IRB-based HBase Shell added in HBase 0.2.x. It replaces the SQL-like [:Hbase/HbaseShell: HQL], the Shell found in HBase versions 0.1.x and previous. Some discussion of new shell requirements can be found in the [:Hbase/Shell/Replacement: Shell Replacement] document. - == Examples == + == Commands == + TODO: Full exposition. + + == Basics == + + A few command-line arguments can be passed the shell. Pass ''--help'' to see whats available: e.g. ''durruti:~ stack$ ./bin/hbase shell --help''. For example, its possible to point the shell at a cluster other than the one that is set in the ''hbase-site.xml'' using the ''--master=MASTER'' option. + + == Anatomy Lesson == + The HBase Shell is a ruby script, ''${HBASE_HOME}/bin/hirb.rb'', that is passed to the JRuby class ''org.jruby.Main'' (See ''${HBASE_HOME}/bin/shell'' and search for org.jruby.Main to see how its done). + + The ''hirb.rb' script defines a set of hbase methods (get, set, scan, etc.), sets some environment variables, imports a few hbase-particular modules -- a results Formatter and a ruby wrapper around the ''HBaseAdmin'' and ''HTable'' java classes that can be found at ''${HBASE_HOME}/bin/HBase.rb'' -- and then starts up a subclass of IRB, named HIRB (IRB is the name of the interactive Ruby interpreter; for an untainted irb experience, type 'irb' on a system that has ruby installed). The subclassing is done to alter slightly some of the usual IRB behaviors. For instance, every command invocation returns a result and the result is printed to the terminal even if the result is nil. The subclass intercepts nil emissions and just suppresses them. + + Anything you can do in irb, or at least in its JRuby equivalent, ''jirb'', you should be able to do in HBase Shell. + + == Scripting == + + You can pass scripts to the HBase Shell by doing the following: + + {{{durruti:~ stack$ ${HBASE_HOME}/bin/hbase shell PATH_TO_SCRIPT}}} + + Your script can lean on the methods provided by the HBase Shell. + + For more control, you may prefer manipulating HTable and HBaseAdmin methods directly. For example, if you would do your own formatting or you are storing structures that are mangled when manipulated in HBase Shell. In this case, you might pass your scripts directly to JRuby by doing: + + {{{durruti:~ stack$ ${HBASE_HOME}/bin/hbase org.jruby.Main PATH_TO_SCRIPT}}} + + For examples writing straight ruby manhandling hbase client instances, see the scripts on this page: [:Hbase/JRuby] (Ignore the sections that have you fetching the jruby jar and the prefacing your scripts with the '#!' bang magic). == Useful Tricks == + === irbrc === Create an ''.irbrc'' file for yourself in your home directory. Add HBase Shell customizations. A useful one is command history:
