HBase shell 命令创建表及添加数据操作

创建表,表名hbase_1102,HBase表是由Key-Value组成的,此表中Key为NAME 
 


此表有两个列族,CF1和CF2,其中CF1和CF2下分别有两个列name和gender,Chinese和Math 
1,创建表hbase_1102有两个列族CF1和CF2

hbase(main):041:0> create 'hbase_1102',  {NAME=>'cf1'}, {NAME=>'cf2'}

2,向表中添加数据,在想HBase的表中添加数据的时候,只能一列一列的添加,不能同时添加多列。

hbase(main):042:0> put'hbase_1102', '001','cf1:name','Tom'
hbase(main):043:0> put'hbase_1102', '001','cf1:gender','man'
hbase(main):044:0> put'hbase_1102', '001','cf2:chinese','90'
hbase(main):045:0> put'hbase_1102', '001','cf2:math','91'

 

这样表结构就起来了,其实比较自由,列族里边可以自由添加子列很方便。如果列族下没有子列,加不加冒号都是可以的。

如果在添加数据的时候,需要手动的设置时间戳,则在put命令的最后加上相应的时间戳,时间戳是long类型的,所以不需要加引号

hbase(main):045:0> put'hbase_1102', '001','cf2:math','91',1478053832459

3,查看表中的所有数据

hbase(main):046:0> scan 'hbase_1102'
ROW   COLUMN+CELL                                                             
 001  column=cf1:gender, timestamp=1478053832459, value=man                   
 001  column=cf1:name, timestamp=1478053787178, value=Tom                     
 001  column=cf2:chinese, timestamp=1478053848225, value=90001  column=cf2:math, timestamp=1478053858144, value=911 row(s) in0.0140seconds

4,查看其中某一个Key的数据

hbase(main):048:0> get'hbase_1102','001'
COLUMN                    CELL                                                                    
 cf1:gender               timestamp=1478053832459, value=man                                      
 cf1:name                 timestamp=1478053787178, value=Tom                                      
 cf2:chinese              timestamp=1478053848225, value=90                                       
 cf2:math                 timestamp=1478053858144, value=914 row(s) in0.0290seconds

------------------------------------------------------

Hbase删除表

用drop命令可以删除表。在删除一个表之前必须先将其禁用。

hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds


hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds

使用exists 命令验证表是否被删除。

hbase(main):020:0> exists 'emp'
Table emp does not exist

0 row(s) in 0.0730 seconds

drop_all

这个命令是用来在给出删除匹配“regex”表。它的语法如下:

hbase> drop_all ‘t.*’ 

注意:要删除表,则必须先将其禁用。

示例

假设有一些表的名称为raja, rajani, rajendra, rajesh, 和 raju。

hbase(main):017:0> list
TABLE
raja
rajani
rajendra 
rajesh
raju
9 row(s) in 0.0270 seconds

所有这些表以字母raj开始。首先使用disable_all命令禁用所有这些表如下所示。

hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

现在,可以使用 drop_all 命令删除它们,如下所示。

hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
rajesh
raju

Drop the above 5 tables (y/n)?

y
5 tables successfully dropped

使用Java API删除表

可以使用 HBaseAdmin 类的deleteTable()方法删除表。按照下面给出是使用Java API来删除表中的步骤。

第1步

实例化HBaseAdmin类。

// creating a configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf); 

第2步

使用HBaseAdmin类的disableTable()方法禁止表。

admin.disableTable("emp1");

第3步

现在使用HBaseAdmin类的deleteTable()方法删除表。

admin.deleteTable("emp12");

下面给出的是完整的Java程序用于删除HBase表。

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteTable {

   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // disabling table named emp
      admin.disableTable("emp12");

      // Deleting emp
      admin.deleteTable("emp12");
      System.out.println("Table deleted");
   }
}

编译和执行上述程序如下所示。

 

$javac DeleteTable.java
$java DeleteTable

下面是输出结果:

Table deleted

 

你可能感兴趣的:(HBase)