HBase基本的資料操作

chenfeng發表於2016-05-23
概述

對於建表,和RDBMS類似,HBase也有namespace的概念,可以指定表空間建立表,也可以直接建立表,進入default表空間。

對於資料操作,HBase支援四類主要的資料操作,分別是:

Put :增加一行,修改一行;

Delete :刪除一行,刪除指定列族,刪除指定column的多個版本,刪除指定column的制定版本等;

Get :獲取指定行的所有資訊,獲取指定行和指定列族的所有colunm,獲取指定column,獲取指定column的幾個版本, 獲取指定column的指定版本等; 

Scan :獲取所有行,獲取指定行鍵範圍的行,獲取從某行開始的幾行,獲取滿足過濾條件的行等。

這四個類都是 org.apache.hadoop.hbase.client的子類,可以到官網API去檢視詳細資訊,本文僅總結常用方法,力爭讓讀者用20%的時間掌握80%的常用功能。


1. 名稱空間Namespace


在關聯式資料庫系統中,名稱空間


namespace指的是一個 表的邏輯分組 ,同一組中的表有類似的用途。名稱空間的概念為 即將到來 的多租戶特性打下基礎:


配額管理( Quota Management (HBASE-8410)):限制一個namespace可以使用的資源,資源包括region和table等;


名稱空間安全管理( Namespace Security Administration (HBASE-9206)):提供了另一個層面的多租戶安全管理; 


Region伺服器組(Region server groups (HBASE-6721)):一個名稱空間或一張表,可以被固定到一組 regionservers上,從而保證了資料隔離性。


1.1.名稱空間管理


名稱空間可以被建立、移除、修改。


表和名稱空間的隸屬關係 在在建立表時決定,透過以下格式指定:


<namespace>:<table>


Example:hbase shell中建立名稱空間、建立名稱空間中的表、移除名稱空間、修改名稱空間


#Create a namespace create_namespace 'my_ns' 


#create my_table in my_ns namespace create 'my_ns:my_table', 'fam' 


#drop namespace drop_namespace 'my_ns' 


#alter namespace alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'} 


1.2. 預定義的名稱空間


有兩個系統內建的預定義名稱空間:


hbase :系統名稱空間,用於包含hbase的內部表 
default : 所有未指定名稱空間的表都自動進入該名稱空間
Example:指定名稱空間和預設名稱空間
#namespace=foo and table qualifier=bar create 'foo:bar', 'fam' #namespace=default and table qualifier=bar create 'bar', 'fam'


2.建立表
Configuration conf = HBaseConfiguration. create ();


        HBaseAdmin admin =  new  HBaseAdmin(conf);


         //create  namespace  named "my_ns"


        admin.createNamespace(NamespaceDescriptor. create ( "my_ns" ).build());


         //create tableDesc, with  namespace  name "my_ns" and table name "mytable "


        HTableDescriptor tableDesc =  new  HTableDescriptor(TableName. valueOf ("my_ns:mytable" ));


         tableDesc.setDurability(Durability. SYNC_WAL );


         //add a column family " mycf "


        HColumnDescriptor hcd =  new  HColumnDescriptor( "mycf" );


        tableDesc.addFamily(hcd);


        admin.createTable(tableDesc);


        admin.close();

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2105531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章