1. 程式人生 > >hbase常見的java類與資料模型(備忘)

hbase常見的java類與資料模型(備忘)

hbase的java類與資料模型
HBaseAdmin、HBaseConfiguration 資料庫管理類
HTable資料庫例項
HTableDescribe 列族例項

三個重要操作
put:插入記錄
get:返回記錄
scanner:全盤掃描的類

HBaseConfiguration:HBase管理類,用於對叢集的配置,通過色圖方法來設定一系列的屬性。
方法
返回值:void 函式:addResource(Path file) 描述:制定路徑下檔案作為資源新增到配置
返回值:void 函式:clear() 描述:清除所有的已有設定
返回值:void 函式:get(string name) 描述:獲取屬性名對應的值
返回值:string 函式:getBoolean(strung name, boolean defaultValue) 描述:獲取為boolean型別是屬性值
如果屬性值型別不是boolean則返回預設屬性值
返回值:void 函式:set(string name, string value) 描述:通過屬性名來設定值
返回值:void 函式:setBoolean(string name, boolean name) 描述:設定boolean型別屬性值

HBaseAdmin:比較關鍵,他提供一組管理HBse表的操作,整個HBase的管理類。
示例
HBaseAdmin admin = new HbaseAdmin(config);
admin.disableTable(“tableName”);
方法
返回值:void 函式:addColumn(String tableName, HColimnDescriptor column)描述:向已存在的表新增列
返回值:void 函式:checkHBaseAvailable(HBaseConfiguration conf)描述:靜態函式,檢視HBase是否處於執行狀態
返回值:void 函式:createTable(HTableDescriptor desc)描述:建立一個表同步操作
返回值:void 函式:deleteTable(byte[] tableName)描述:刪除表
返回值:void 函式:enableTable(byte[] tableName)描述:使表處於有效狀態
返回值:void 函式:disableTable(byte[] tableName)描述:使表處於無效狀態
返回值:HTableDescriptor[] 函式:listTable() 描述:列出所有使用者控制元件表項
返回值:void 函式:modifyTable(byte[] tableName,HTableDescriptor htd) 描述:修改表模式,是非同步操作,可能需要一些時間
返回值:Boolean 函式:tableExist(String tableName) 描述:檢查表是否存在

HTableDescripor:描述了表裡的列族。
示例
HTableDescripor htd = new HTableDescripor(table);
htd.addFamily(new HColumnDescripor(“family”))
方法
返回值:void 函式:addFamily(HColumnDescripor)描述:新增一個列族
返回值:HColumnDescripor 函式:removeFamily(byte[] colunm)描述:移除一個列族
返回值:byte[] 函式:getName() 描述:獲取表的名字
返回值:byte[]數:getValue(byte[] key) 描述:獲取屬性的值
返回值:void 函式:setValue 描述:設定屬性值

HColumnDescription:維護列族裡的資訊,如版本號,壓縮設定,通常在建表或者新增列族時使用,建成後不能修改,只能刪除後再重新建立。
示例
HTableDescripor htd = new HTableDescripor(table);
HColumnDescription col = new HColumnDescription(“content:”)
htd.addFamily(col);
方法
返回值:byte[] 函式:getNmae() 描述:獲取列族的名字
返回值:byte[] 函式:getValue(byte[] key) 描述:獲取對應屬性的值
返回值:void 函式:setValue(string key, string value) 描述:設定對應的屬性值

HTabele:用來和HBase直接通訊的例項,此方法對於更新操作是非執行緒安全的(不建議使用HTable來更新物件,推薦使用HTablePool)。
示例
HTable table = new HTable(conf, Byte.toBytes(tableName));
ResultScanner scanner = table.getScanner(family);
方法
返回值:void 函式:checkAndPut(byte[] family, byte[] qualifier, byte[] value, Put put) 描述:自動檢查row/family/qualifier是否與給定值匹配
返回值:void 函式:close() 描述:釋放所有資源或掛起內部緩衝區的更新
返回值:Boolean 函式:exist(Get get) 描述:檢查Get例項中的值是否存在於HTable的列中
返回值:Result 函式:get(Get get) 描述:獲取指定行的某些單元格對應值
返回值:byte[][] 函式:getEndkeys 描述:獲取當前一開啟的表的每個區域的結束值
返回值:ResultScanner 函式:getScanner(byte[] family) 描述:獲取給定列族的scanner例項
返回值:HTableDescriptor 函式:getTableDescriptor() 描述:獲取當前表的HTableDescriptor例項
返回值:byte[] 函式: 描述:getTableName() 描述:獲取表名
返回值:static boolean 函式:isTableEnable(HBaseConfiguration conf, string tableName) 描述:檢查表是否有效
返回值:void 函式:put(Put put) 描述:向表中新增值

HTablePool:解決Htable執行緒不安全帶方式,這個類是同時維護固定數量的HTable物件的資源池,能夠在執行期間複用這些資源。
說明:
1.HtablePool可以自動建立HTable物件,而且對客戶端來說是透明的,可以避免多執行緒的併發修改問題。
2.HTablePool:中的HTable物件之間是公用的Configuration連結的,能夠減少網路開銷。
HTablePool的使用很簡單,通過HTablePool的getTable方法獲得HTable物件,然後進行put/get/scan/delete等操作,最後HTablePoold
putTable方法放回HTablePool中。
(HTablePool已經被標記為過時,現在推薦HConnectionManager)

Put:進行資料插入
HTable table = new HTable(conf, Byte。toByte(tableName));
Put p = new Put(brow);
p.add(family,qualifier,value);
table。put(p);

Get:獲取行記錄
HTable table = new HTable(conf, Byte。toByte(tableName));
Get g = new Get(brow);
table.get(g);//返回result型別

Result:返回結果型別

ResultScanner:Result型別的迭代器