名称

命令表达式

创建表

create '表名', '列族名1','列族名2','列族名N'

查看所有表

list

描述表

describe  ‘表名’

判断表存在

exists  '表名'

判断是否禁用启用表

is_enabled '表名'

is_disabled ‘表名’

添加记录     

put  ‘表名’, ‘rowKey’, ‘列族 : 列‘  ,  '值'

查看记录rowkey下的所有数据

get  '表名' , 'rowKey'

查看表中的记录总数

count  '表名'

获取某个列族

get '表名','rowkey','列族'

获取某个列族的某个列

get '表名','rowkey','列族:列’

删除记录

delete  ‘表名’ ,‘行名’ , ‘列族:列'

删除整行

deleteall '表名','rowkey'

删除一张表

先要屏蔽该表,才能对该表进行删除

第一步 disable ‘表名’ ,第二步  drop '表名'

清空表

truncate '表名'

查看所有记录

scan "表名" 

查看某个表某个列中所有数据

scan "表名" , {COLUMNS=>'列族名:列名'}

更新记录

就是重写一遍,进行覆盖,hbase没有修改,都是追加

1、执行Ruby脚本

例如使用脚本查看HBase bin目录。看看以.rb结尾的文件。若要运行这些文件中的一个,请执行如下操作:

$ ./bin/hbase org.jruby.Main PATH_TO_SCRIPT

2、以非交互模式执行shell脚本

非交互模式捕获HBase Shell命令的退出状态(成功或失败),并将该状态传递回命令解释器。如果使用普通的交互模式,HBase Shell将只返回它自己的退出状态,对于成功几乎总是0。

要调用非交互模式,将-n或--non-interactive非交互式选项传递到HBASE外壳。

3、在操作系统脚本中运行HBase Shell

您可以在操作系统脚本解释器中使用HBase shell,如Bash shell,它是大多数Linux和UNIX发行版的默认命令解释器。下面的指南使用Bash语法,但是可以调整为使用C风格的shell,如csh或tcsh,并且可以修改为使用Microsoft Windows脚本解释器。

以这种方式生成HBase Shell命令很慢,因此在决定何时将HBase操作与操作系统命令行组合时要记住这一点。

3.1、想HBase Shell传递命令

您可以使用echo命令和|(管道)操作符在非交互模式下向HBase Shell传递命令。确保转义HBase命令中的字符,否则将由shell解释。一些调试级别输出已从下面的示例截断。 

$ echo "describe 'test1'" | ./hbase shell -n

Version 0.98.3-hadoop2, rd5e65a9144e315bb0a964e7730871af32f5018d5, Sat May 31 19:56:09 PDT 2014

describe 'test1'

DESCRIPTION                                          ENABLED
 'test1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'NON true
 E', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0',
  VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIO
 NS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS =>
 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false'
 , BLOCKCACHE => 'true'}
1 row(s) in 3.2410 seconds

为了不显示打印信息, 将所有输出定向到 /dev/null:

$ echo "describe 'test'" | ./hbase shell -n > /dev/null 2>&1

3.2、检查脚本命令的结果

由于脚本不是被设计成交互式运行的,所以您需要一种方法来检查命令是失败还是成功。HBase shell使用标准约定,为成功命令返回值0,为失败命令返回一些非零值。BASH在一个称为$的特殊环境变量中存储命令的返回值?因为每次shell运行任何命令时都会覆盖该变量,所以应该将结果存储在不同的脚本定义的变量中。

这是一个简单的脚本,它显示了一种存储返回值并基于它做出决策的方法。

#!/bin/bash

echo "describe 'test'" | ./hbase shell -n > /dev/null 2>&1
status=$?
echo "The status was " $status
if ($status == 0); then
    echo "The command succeeded"
else
    echo "The command may have failed."
fi
return $status

获得0的退出代码意味着您编写的命令肯定是成功的。但是,获得非零退出代码并不一定意味着命令失败。命令本来可以成功,但是客户端失去了连接,或者某些其他事件掩盖了它的成功。这是因为RPC命令是无状态的。确认操作状态的唯一方法是检查。例如,如果您的脚本创建了一个表,但是返回了一个非零的退出值,那么您应该在再次尝试创建表之前检查该表是否实际被创建。

4、从文本文件读取HBase Shell命令

您可以将HBase Shell命令输入到文本文件中,每行输入一个命令,并将该文件传递给HBase Shell。

create 'test', 'cf'
list 'test'
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
put 'test', 'row4', 'cf:d', 'value4'
scan 'test'
get 'test', 'row1'
disable 'test'
enable 'test

将命令文件的路径传递给HBASE shell命令的唯一参数。执行每个命令并显示其输出。如果脚本中不包含退出命令,则返回到HBASE shell提示符。没有办法以编程方式检查每个命令的成功或失败。此外,尽管您看到了每个命令的输出,但是命令本身不会回显到屏幕上,因此很难将命令与其输出对齐。

$ ./hbase shell ./sample_commands.txt
0 row(s) in 3.4170 seconds

TABLE
test
1 row(s) in 0.0590 seconds

0 row(s) in 0.1540 seconds

0 row(s) in 0.0080 seconds

0 row(s) in 0.0060 seconds

0 row(s) in 0.0060 seconds

ROW                   COLUMN+CELL
 row1                 column=cf:a, timestamp=1407130286968, value=value1
 row2                 column=cf:b, timestamp=1407130286997, value=value2
 row3                 column=cf:c, timestamp=1407130287007, value=value3
 row4                 column=cf:d, timestamp=1407130287015, value=value4
4 row(s) in 0.0420 seconds

COLUMN                CELL
 cf:a                 timestamp=1407130286968, value=value1
1 row(s) in 0.0110 seconds

0 row(s) in 1.5630 seconds

0 row(s) in 0.4360 seconds

5、传递VM选项到Shell

您可以使用HBASE_SHELL_OPTS环境变量将VM选项传递给HBASE Shell。您可以在您的环境中设置它,例如,通过编辑~/.bashrc,或者将其设置为启动HBase Shell的命令的一部分。下面的示例仅针对运行HBase Shell的VM的生命周期设置几个与垃圾收集相关的变量。

$ HBASE_SHELL_OPTS="-verbose:gc -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps \
  -XX:+PrintGCDetails -Xloggc:$HBASE_HOME/logs/gc-hbase.log" ./bin/hbase shell