blob: 4fbab08d22360f371c8ab5f846af2b29ff480643 [file] [log] [blame]
<?xml version="1.0"?>
<chapter xml:id="shell"
version="5.0" xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<!--
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<title>The HBase Shell</title>
<para>
The HBase Shell is <link xlink:href="http://jruby.org">(J)Ruby</link>'s
IRB with some HBase particular commands added. Anything you can do in
IRB, you should be able to do in the HBase Shell.</para>
<para>To run the HBase shell,
do as follows:
<programlisting>$ ./bin/hbase shell</programlisting>
</para>
<para>Type <command>help</command> and then <command>&lt;RETURN&gt;</command>
to see a listing of shell
commands and options. Browse at least the paragraphs at the end of
the help emission for the gist of how variables and command
arguments are entered into the
HBase shell; in particular note how table names, rows, and
columns, etc., must be quoted.</para>
<para>See <xref linkend="shell_exercises" />
for example basic shell operation.</para>
<section xml:id="scripting"><title>Scripting</title>
<para>For examples scripting HBase, look in the
HBase <filename>bin</filename> directory. Look at the files
that end in <filename>*.rb</filename>. To run one of these
files, do as follows:
<programlisting>$ ./bin/hbase org.jruby.Main PATH_TO_SCRIPT</programlisting>
</para>
</section>
<section xml:id="shell_tricks"><title>Shell Tricks</title>
<section><title><filename>irbrc</filename></title>
<para>Create an <filename>.irbrc</filename> file for yourself in your
home directory. Add customizations. A useful one is
command history so commands are save across Shell invocations:
<programlisting>
$ more .irbrc
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"</programlisting>
See the <application>ruby</application> documentation of
<filename>.irbrc</filename> to learn about other possible
confiurations.
</para>
</section>
<section><title>LOG data to timestamp</title>
<para>
To convert the date '08/08/16 20:56:29' from an hbase log into a timestamp, do:
<programlisting>
hbase(main):021:0> import java.text.SimpleDateFormat
hbase(main):022:0> import java.text.ParsePosition
hbase(main):023:0> SimpleDateFormat.new("yy/MM/dd HH:mm:ss").parse("08/08/16 20:56:29", ParsePosition.new(0)).getTime() => 1218920189000</programlisting>
</para>
<para>
To go the other direction:
<programlisting>
hbase(main):021:0> import java.util.Date
hbase(main):022:0> Date.new(1218920189000).toString() => "Sat Aug 16 20:56:29 UTC 2008"</programlisting>
</para>
<para>
To output in a format that is exactly like that of the HBase log format will take a little messing with
<link xlink:href="http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</link>.
</para>
</section>
<section><title>Debug</title>
<section><title>Shell debug switch</title>
<para>You can set a debug switch in the shell to see more output
-- e.g. more of the stack trace on exception --
when you run a command:
<programlisting>hbase> debug &lt;RETURN&gt;</programlisting>
</para>
</section>
<section><title>DEBUG log level</title>
<para>To enable DEBUG level logging in the shell,
launch it with the <command>-d</command> option.
<programlisting>$ ./bin/hbase shell -d</programlisting>
</para>
</section>
</section>
</section>
</chapter>