自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于Java的HBase客戶端編程

開發(fā) 后端
本文以HBase 0.90.2為例,介紹如何在Windows系統(tǒng),Eclipse IDE集成環(huán)境下,使用Java語言,進行HBase客戶端編程,包含建立表、刪除表、插入記錄、刪除記錄、各種方式下的查詢操作等。

本文以HBase 0.90.2為例,介紹如何在Windows系統(tǒng),Eclipse IDE集成環(huán)境下,使用Java語言,進行HBase客戶端編程,包含建立表、刪除表、插入記錄、刪除記錄、各種方式下的查詢操作等。

1. 準備工作

  1. 下載后安裝jdk包(這里使用的是jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008);
  2. 下載eclipse,解壓到本地(這里使用的是eclipse-java-helios-SR2-win32);
  3. 下載HBase包,解壓安裝包到本地(這里使用的是hbase-0.90.2)。

2. 搭建開發(fā)環(huán)境

  1. 運行Eclipse,創(chuàng)建一個新的Java工程“HBaseClient”,右鍵項目根目錄,選擇 “Properties”->“Java Build Path”->“Library”->“Add External JARs”,將HBase解壓后根目錄下的hbase-0.90.2.jar、hbase-0.90.2-tests.jar和lib子目錄下所有jar 包添加到本工程的Classpath下。
  2. 按照步驟1中的操作,將自己所連接的HBase的配置文件hbase-site.xml添加到本工程的Classpath中,如下所示為配置文件的一個示例:
    1. <configuration> 
    2. <property> 
    3. <name>hbase.rootdir</name> 
    4. <value>hdfs://hostname:9000/hbase</value> 
    5. </property> 
    6. <property> 
    7. <name>hbase.cluster.distributed</name> 
    8. <value>true</value> 
    9. </property> 
    10. <property> 
    11. <name>hbase.zookeeper.quorum</name> 
    12. <value>*.*.*.*, *.*.*.*, *.*.*.*</value> 
    13. </property> 
    14. <property skipInDoc="true"
    15. <name>hbase.defaults.for.version</name> 
    16. <value>0.90.2</value> 
    17. </property> 
    18. </configuration> 
  3. 下面可以在Eclipse環(huán)境下進行HBase編程了。

3. HBase基本操作代碼示例

3.1 初始化配置

  1. private static Configuration conf = null
  2. /** 
  3.  * 初始化配置 
  4.  */ 
  5. static { 
  6.     conf = HBaseConfiguration.create(); 

3.2 創(chuàng)建表

  1. /** 
  2.  * 創(chuàng)建表操作 
  3.  * @throws IOException 
  4.  */ 
  5. public void createTable(String tablename, String[] cfs) throws IOException { 
  6.     HBaseAdmin admin = new HBaseAdmin(conf); 
  7.     if (admin.tableExists(tablename)) { 
  8.         System.out.println("表已經(jīng)存在!"); 
  9.     } 
  10.     else { 
  11.         HTableDescriptor tableDesc = new HTableDescriptor(tablename); 
  12.         for (int i = 0; i < cfs.length; i++) { 
  13.             tableDesc.addFamily(new HColumnDescriptor(cfs[i])); 
  14.         } 
  15.         admin.createTable(tableDesc); 
  16.         System.out.println("表創(chuàng)建成功!"); 
  17.     } 

3.3 刪除表

  1. /** 
  2.  * 刪除表操作 
  3.  * @param tablename 
  4.  * @throws IOException 
  5.  */ 
  6. public void deleteTable(String tablename) throws IOException { 
  7.     try { 
  8.         HBaseAdmin admin = new HBaseAdmin(conf); 
  9.         admin.disableTable(tablename); 
  10.         admin.deleteTable(tablename); 
  11.         System.out.println("表刪除成功!"); 
  12.     } catch (MasterNotRunningException e) { 
  13.         e.printStackTrace(); 
  14.     } catch (ZooKeeperConnectionException e) { 
  15.         e.printStackTrace(); 
  16.     } 

3.4 插入一行記錄

  1. /** 
  2.  * 插入一行記錄 
  3.  * @param tablename 
  4.  * @param cfs 
  5.  */ 
  6. public void writeRow(String tablename, String[] cfs) { 
  7.     try { 
  8.         HTable table = new HTable(conf, tablename); 
  9.         Put put = new Put(Bytes.toBytes("rows1")); 
  10.         for (int j = 0; j < cfs.length; j++) { 
  11.             put.add(Bytes.toBytes(cfs[j]), 
  12.                     Bytes.toBytes(String.valueOf(1)), 
  13.                     Bytes.toBytes("value_1")); 
  14.             table.put(put); 
  15.         } 
  16.     } catch (IOException e) { 
  17.         e.printStackTrace(); 
  18.     } 

3.5 刪除一行記錄

  1. /** 
  2.  * 刪除一行記錄 
  3.  * @param tablename 
  4.  * @param rowkey 
  5.  * @throws IOException 
  6.  */ 
  7. public void deleteRow(String tablename, String rowkey) throws IOException { 
  8.     HTable table = new HTable(conf, tablename); 
  9.     List list = new ArrayList(); 
  10.     Delete d1 = new Delete(rowkey.getBytes()); 
  11.     list.add(d1); 
  12.     table.delete(list); 
  13.     System.out.println("刪除行成功!"); 

3.6 查找一行記錄

  1. /** 
  2.  * 查找一行記錄 
  3.  * @param tablename 
  4.  * @param rowkey 
  5.  */ 
  6. public static void selectRow(String tablename, String rowKey) 
  7.         throws IOException { 
  8.     HTable table = new HTable(conf, tablename); 
  9.     Get g = new Get(rowKey.getBytes()); 
  10.     Result rs = table.get(g); 
  11.     for (KeyValue kv : rs.raw()) { 
  12.         System.out.print(new String(kv.getRow()) + "  "); 
  13.         System.out.print(new String(kv.getFamily()) + ":"); 
  14.         System.out.print(new String(kv.getQualifier()) + "  "); 
  15.         System.out.print(kv.getTimestamp() + "  "); 
  16.         System.out.println(new String(kv.getValue())); 
  17.     } 

3.7 查詢表中所有行

  1. /** 
  2.  * 查詢表中所有行 
  3.  * @param tablename 
  4.  */ 
  5. public void scaner(String tablename) { 
  6.     try { 
  7.         HTable table = new HTable(conf, tablename); 
  8.         Scan s = new Scan(); 
  9.         ResultScanner rs = table.getScanner(s); 
  10.         for (Result r : rs) { 
  11.             KeyValue[] kv = r.raw(); 
  12.             for (int i = 0; i < kv.length; i++) { 
  13.                 System.out.print(new String(kv[i].getRow()) + "  "); 
  14.                 System.out.print(new String(kv[i].getFamily()) + ":"); 
  15.                 System.out.print(new String(kv[i].getQualifier()) + "  "); 
  16.                 System.out.print(kv[i].getTimestamp() + "  "); 
  17.                 System.out.println(new String(kv[i].getValue())); 
  18.             } 
  19.         } 
  20.     } catch (IOException e) { 
  21.         e.printStackTrace(); 
  22.     } 

原文鏈接:http://www.cnblogs.com/panfeng412/archive/2011/08/14/2137984.html

【編輯推薦】

  1. Java 8整裝待發(fā) 圖謀云計算
  2. Java 7是蜜糖還是毒藥?
  3. 選用Ibatis和Hibernate的區(qū)別
  4. JRuby和Java 7 我們可以期待什么
  5. 關(guān)于Eclipse使用64位Java 7崩潰的問題
責任編輯:艾婧 來源: 博客園
相關(guān)推薦

2009-06-12 19:18:08

REST客戶端框架JavaScript

2009-11-05 13:00:25

WCF客戶端

2009-12-22 18:18:11

WCF客戶端編程

2011-04-22 10:34:09

SimpleFrame

2012-10-17 09:50:47

HBase

2009-03-18 14:44:34

LinuxqTwitterTwitter

2012-02-27 09:30:24

JavaMindTerm

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2025-01-07 08:10:00

CefSharpWinformWindows

2012-08-20 09:57:11

JavaiQQ開源QQ

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2014-08-11 16:35:35

KafkaJava客戶端

2009-06-23 14:00:49

JavaFX開發(fā)

2024-01-17 19:05:44

mget優(yōu)化數(shù)據(jù)庫

2011-08-17 10:10:59

2023-02-16 08:00:00

數(shù)據(jù)流客戶端開發(fā)數(shù)據(jù)集

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2011-03-24 13:00:31

配置nagios客戶端
點贊
收藏

51CTO技術(shù)棧公眾號