當前位置:編程學習大全網 - 源碼下載 - hbase java

hbase java

hbase java是什麽,讓我們壹起了解壹下?

HBase是壹個分布式的、面向列的開源數據庫,具有高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。

如何使用JAVA語言操作Hbase、整合Hbase?

可分為五步驟:

步驟1:新創建壹個Java Project?。

步驟2:導入JAR包,在工程根目錄下新建壹個“lib”文件夾,將官方文檔中的lib目錄下的jar全部導入。

步驟3:修改開發機的hosts文件,在文件莫為增加壹行虛擬機IP的映射信息。

步驟4:修改虛擬機的配置文件,修改虛擬機的設備名稱,名稱需要與之前兩個配置文件的映射名稱壹致。

步驟5:實現查詢、新建、刪除等。

案例代碼展示如下:

package?hbase; import?java.io.IOException; import?java.util.ArrayList; import?java.util.List; import?org.apache.hadoop.conf.Configuration; import?org.apache.hadoop.hbase.Cell; import?org.apache.hadoop.hbase.HBaseConfiguration; import?org.apache.hadoop.hbase.HColumnDescriptor; import?org.apache.hadoop.hbase.HTableDescriptor; import?org.apache.hadoop.hbase.TableName; 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.client.Delete; import?org.apache.hadoop.hbase.client.Get; import?org.apache.hadoop.hbase.client.Put; import?org.apache.hadoop.hbase.client.Result; import?org.apache.hadoop.hbase.client.ResultScanner; import?org.apache.hadoop.hbase.client.Scan; import?org.apache.hadoop.hbase.client.Table; import?org.apache.hadoop.hbase.exceptions.DeserializationException; import?org.apache.hadoop.hbase.filter.Filter; import?org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import?org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import?org.apache.hadoop.hbase.util.Bytes; import?org.junit.Before; import?org.junit.Test; public?class?HBaseDemo?{ //?與HBase數據庫的連接對象 Connection?connection; //?數據庫元數據操作對象 Admin?admin; @Before public?void?setUp()?throws?Exception?{ //?取得壹個數據庫連接的配置參數對象 Configuration?conf?=?HBaseConfiguration.create(); //?設置連接參數:HBase數據庫所在的主機IP conf.set("hbase.zookeeper.quorum",?"192.168.137.13"); //?設置連接參數:HBase數據庫使用的端口 conf.set("hbase.zookeeper.property.clientPort",?"2181"); //?取得壹個數據庫連接對象 connection?=?ConnectionFactory.createConnection(conf); //?取得壹個數據庫元數據操作對象 admin?=?connection.getAdmin(); } /** *?創建表 */ public?void?createTable()?throws?IOException{ System.out.println("---------------創建表?START-----------------"); //?數據表表名 String?tableNameString?=?"t_book"; //?新建壹個數據表表名對象 TableName?tableName?=?TableName.valueOf(tableNameString); //?如果需要新建的表已經存在 if(admin.tableExists(tableName)){ System.out.println("表已經存在!"); } //?如果需要新建的表不存在 else{ //?數據表描述對象 HTableDescriptor?hTableDescriptor?=?new?HTableDescriptor(tableName); //?列族描述對象 HColumnDescriptor?family=?new?HColumnDescriptor("base");; //?在數據表中新建壹個列族 hTableDescriptor.addFamily(family); //?新建數據表 admin.createTable(hTableDescriptor); } System.out.println("---------------創建表?END-----------------"); } /** *?查詢整表數據 */ @Test public?void?queryTable()?throws?IOException{ System.out.println("---------------查詢整表數據?START-----------------"); //?取得數據表對象 Table?table?=?connection.getTable(TableName.valueOf("t_book")); //?取得表中所有數據 ResultScanner?scanner?=?table.getScanner(new?Scan()); //?循環輸出表中的數據 for?(Result?result?:?scanner)?{ byte[]?row?=?result.getRow(); System.out.println("row?key?is:"?+?new?String(row)); List ?listCells?=?result.listCells(); for?(Cell?cell?:?listCells)?{ byte[]?familyArray?=?cell.getFamilyArray(); byte[]?qualifierArray?=?cell.getQualifierArray(); byte[]?valueArray?=?cell.getValueArray(); System.out.println("row?value?is:"?+?new?String(familyArray)?+?new?String(qualifierArray) +?new?String(valueArray)); } } System.out.println("---------------查詢整表數據?END-----------------"); } /** *?按行鍵查詢表數據 */ @Test public?void?queryTableByRowKey()?throws?IOException{ System.out.println("---------------按行鍵查詢表數據?START-----------------"); //?取得數據表對象 Table?table?=?connection.getTable(TableName.valueOf("t_book")); //?新建壹個查詢對象作為查詢條件 Get?get?=?new?Get("row8".getBytes()); //?按行鍵查詢數據 Result?result?=?table.get(get); byte[]?row?=?result.getRow(); System.out.println("row?key?is:"?+?new?String(row)); List ?listCells?=?result.listCells(); for?(Cell?cell?:?listCells)?{ byte[]?familyArray?=?cell.getFamilyArray(); byte[]?qualifierArray?=?cell.getQualifierArray(); byte[]?valueArray?=?cell.getValueArray(); System.out.println("row?value?is:"?+?new?String(familyArray)?+?new?String(qualifierArray) +?new?String(valueArray)); } System.out.println("---------------按行鍵查詢表數據?END-----------------"); } /** *?按條件查詢表數據 */ @Test public?void?queryTableByCondition()?throws?IOException{ System.out.println("---------------按條件查詢表數據?START-----------------"); //?取得數據表對象 Table?table?=?connection.getTable(TableName.valueOf("t_book")); //?創建壹個查詢過濾器 Filter?filter?=?new?SingleColumnValueFilter(Bytes.toBytes("base"),?Bytes.toBytes("name"), CompareOp.EQUAL,?Bytes.toBytes("bookName6")); //?創建壹個數據表掃描器 Scan?scan?=?new?Scan(); //?將查詢過濾器加入到數據表掃描器對象 scan.setFilter(filter); //?執行查詢操作,並取得查詢結果 ResultScanner?scanner?=?table.getScanner(scan); //?循環輸出查詢結果 for?(Result?result?:?scanner)?{ byte[]?row?=?result.getRow(); System.out.println("row?key?is:"?+?new?String(row)); List ?listCells?=?result.listCells(); for?(Cell?cell?:?listCells)?{ byte[]?familyArray?=?cell.getFamilyArray(); byte[]?qualifierArray?=?cell.getQualifierArray(); byte[]?valueArray?=?cell.getValueArray(); System.out.println("row?value?is:"?+?new?String(familyArray)?+?new?String(qualifierArray) +?new?String(valueArray)); } } System.out.println("---------------按條件查詢表數據?END-----------------"); } /** *?清空表 */ @Test public?void?truncateTable()?throws?IOException{ System.out.println("---------------清空表?START-----------------"); //?取得目標數據表的表名對象 TableName?tableName?=?TableName.valueOf("t_book"); //?設置表狀態為無效 admin.disableTable(tableName); //?清空指定表的數據 admin.truncateTable(tableName,?true); System.out.println("---------------清空表?End-----------------"); } /** *?刪除表 */ @Test public?void?deleteTable()?throws?IOException{ System.out.println("---------------刪除表?START-----------------"); //?設置表狀態為無效 admin.disableTable(TableName.valueOf("t_book")); //?刪除指定的數據表 admin.deleteTable(TableName.valueOf("t_book")); System.out.println("---------------刪除表?End-----------------"); } /** *?刪除行 */ @Test public?void?deleteByRowKey()?throws?IOException{ System.out.println("---------------刪除行?START-----------------"); //?取得待操作的數據表對象 Table?table?=?connection.getTable(TableName.valueOf("t_book")); //?創建刪除條件對象 Delete?delete?=?new?Delete(Bytes.toBytes("row2")); //?執行刪除操作 table.delete(delete); System.out.println("---------------刪除行?End-----------------"); } /** *?刪除行(按條件) */ @Test public?void?deleteByCondition()?throws?IOException,?DeserializationException{ System.out.println("---------------刪除行(按條件)?START-----------------"); //?步驟1:調用queryTableByCondition()方法取得需要刪除的數據列表 //?步驟2:循環步驟1的查詢結果,對每個結果調用deleteByRowKey()方法 System.out.println("---------------刪除行(按條件)?End-----------------"); } /** *?新建列族 */ @Test public?void?addColumnFamily()?throws?IOException{ System.out.println("---------------新建列族?START-----------------"); //?取得目標數據表的表名對象 TableName?tableName?=?TableName.valueOf("t_book"); //?創建列族對象 HColumnDescriptor?columnDescriptor?=?new?HColumnDescriptor("more"); //?將新創建的列族添加到指定的數據表 admin.addColumn(tableName,?columnDescriptor); System.out.println("---------------新建列族?END-----------------"); } /** *?刪除列族 */ @Test public?void?deleteColumnFamily()?throws?IOException{ System.out.println("---------------刪除列族?START-----------------"); //?取得目標數據表的表名對象 TableName?tableName?=?TableName.valueOf("t_book"); //?刪除指定數據表中的指定列族 admin.deleteColumn(tableName,?"more".getBytes()); System.out.println("---------------刪除列族?END-----------------"); } /** *?插入數據 */ @Test public?void?insert()?throws?IOException{ System.out.println("---------------插入數據?START-----------------"); //?取得壹個數據表對象 Table?table?=?connection.getTable(TableName.valueOf("t_book")); //?需要插入數據庫的數據集合 List ?putList?=?new?ArrayList (); Put?put; //?生成數據集合 for(int?i?=?0;?i?

  • 上一篇:訂購系統源代碼java
  • 下一篇:社區商店源代碼
  • copyright 2024編程學習大全網