Hbase常用命令


進入hbase 控制台

hbase shell

在HBase插入數據時,先輸入數據的格式為rowkey => info => column => value

    rowkey:行鍵,唯一且不重復

    info:列族(數量一般不超過3個)

    column:列(在列族下,一個列族下可有許多個列)

    value:值

    timestamp:時間戳

    cell:單元格

   表的基本結構如圖::

  

二、HBase的常用命令行

  1.查看服務器狀態

    status 'hd1-1'

  2.查看當前用戶/幫助

    whoami/help

  3.查看當前所有的表/命名空間

    list

    list_namespace

  4.創建一張表(一張表名為user、有兩個列族分別為info1和info2)

    create 'user','info1','info2'

  5.掃描一張表

    scan ‘user'

  6.向表中插入數據(向user表的001行鍵、info列族中插入名為name的列,值為Dilireba)

    put 'user','001','info1:name','Dilireba'

  7.篩選數據(startrow、stoprow)

    scan 'user',{STARTROW => '001'}

  8.查看表結構

    describe 'user'

  9.更變表信息,修改版本號

    alter 'user',{NAME => 'info1',VERSIONS => '3'}

   注釋:版本號的意思是一個數據可以存在的版本數,比如user表的info1列族版本versions=3,代表該列族下的數據最多可以存在三個版本,如info1:name=Dilireba,然后在info1:name插入新數據為Yangmi,查看時顯示為Yangmi,但是Dilireba仍然存在,可以通過時間戳來查看。

  10.刪除一張表(先棄用表,在刪除表)/命名空間

    disable 'user'

    drop 'user'  /

    drop '命名空間'

  11.刪除一列數據/一列族數據

    delete 'user','001','info:name'

    delete 'user','001'

  12.清空表

    truncate 'user'

  13.查看表的行數(rowkey的數量)

    count 'user'

  14.查看指定的rowkey的值

    get 'user','001'

  只讀取一條信息(用於查看表結構用)

   scan 'mes_orgdata:pmaunew', {'LIMIT' => 1}

1、介紹
在HBase中,namespace命名空間指對一組表的邏輯分組,類似RDBMS中的database,方便對表在業務上划分。Apache HBase從0.98.0, 0.95.2兩個版本開始支持namespace級別的授權操作,HBase全局管理員可以創建、修改和回收namespace的授權。

2、namespace
HBase系統默認定義了兩個缺省的namespace
hbase:系統內建表,包括namespace和meta表
default:用戶建表時未指定namespace的表都創建在此

創建namespace:
hbase(main):010:0* create_namespace 'datamanage'

查看namespace:
hbase(main):011:0> describe_namespace 'datamanage'
DESCRIPTION
{NAME =>'datamanage'}
列出所有namespace:
hbase(main):012:0> list_namespace
NAMESPACE
datamanage
default
hbase

在namespace下創建表:
hbase(main):013:0> create 'datamanage:testtable','colfam01'
=> Hbase::Table - datamanage:testtable
查看namespace下的表
hbase(main):015:0> list_namespace_tables 'datamanage'
TABLE
testtable

刪除namespace:

hbase(main):016:0> drop_namespace 'datamanage'

ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace datamanage has 1 tables
       at org.apache.hadoop.hbase.master.TableNamespaceManager.remove(TableNamespaceManager.java:200)
       at org.apache.hadoop.hbase.master.HMaster.deleteNamespace(HMaster.java:2488)
       at org.apache.hadoop.hbase.master.MasterRpcServices.deleteNamespace(MasterRpcServices.java:489)
       at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:55730)
       at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2178)
       at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
       at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
       at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
       at java.lang.Thread.run(Thread.java:745)

Here is some help for this command:
Drop the named namespace. The namespace must be empty.
#刪除表
hbase(main):017:0> disable 'datamanage:testtable'
hbase(main):018:0> drop 'datamanage:testtable'
#刪除datamanage命名空間
hbase(main):019:0> drop_namespace 'datamanage'
java API:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;


/**
* Hbase namespace
*/
public class NameSpaceInHbase {
   public static void main(String[] args) throws IOException {

       Configuration conf = HBaseConfiguration.create();
       Connection connection = ConnectionFactory.createConnection(conf);
       //管理員對象
       Admin admin = connection.getAdmin();
       //創建命名空間
       NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("datastrom3").build();
       admin.createNamespace(namespaceDescriptor);
       //表名
       TableName tableName = TableName.valueOf("datastrom3","testtable3");
       //表描述
       HTableDescriptor desc = new HTableDescriptor(tableName);
       //列族描述datastrom
       HColumnDescriptor coldef = new HColumnDescriptor(Bytes.toBytes("colfam3"));
       //表加入列族
       desc.addFamily(coldef);
       //創建表
       admin.createTable(desc);
       //校驗表是否可用
       boolean avail = admin.isTableAvailable(tableName);
       System.out.println("Table available: "+avail);
   }
}
 preHell:
 ========
 nextShell:
 hbase(main):005:0> list
 TABLE
 testtable2
 user
 2 row(s) in 0.0070 seconds
 
java output:
 =====
 Table available: true
 
shell:
 =====
 hbase(main):022:0> list
 TABLE
 datastrom3:testtable3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM