hbase1.1.1客戶端使用入門

jopen 8年前發布 | 7K 次閱讀 NoSQL數據庫

工作中用到hbase,作為一個程序員首先就是要知道怎么使用,快速入門:

  1. 引入maven依賴:

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>1.1.1</version>
</dependency>

2. hbase配置初始化時候會檢查classpath路徑下的hbase-default.xml、hbase-site.xml,hbase-default.xml在hbase-common包中,我們在classpath路徑下加入文件hbase-site.xml,該文件最精簡配置:

<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>127.0.0.1</value>
</property>

hbase.zookeeper.quorum:      zookeeper集群地址,多個用逗號隔開

hbase.zookeeper.property.clientPort:   zookeeper端口

3.代碼中創建連接后就可以進行建表及crud操作:

    private static ThreadLocal<Map<String, Table>> threadLocal = new ThreadLocal<Map<String, Table>>();
    // 初始化配置
    static {
        conf = HBaseConfiguration.create();
          try {
            connection  = ConnectionFactory.createConnection(conf);
        } catch (IOException e) {
            logger.error("", e);
        }
    }
    //獲取表
    public static Table getTable(String tableName) throws IOException {
         Map<String, Table> tables = threadLocal.get();
         if(tables == null) {
             tables = new HashMap<String, Table>(2);
             threadLocal.set(tables);
         }
         Table table = null;
         if(!tables.containsKey(tableName)) {
             table = connection.getTable(TableName.valueOf(tableName));
             tables.put(tableName, table);
         } else {
             table = tables.get(tableName);
         }
         return table;
     }
    
    //創建表 
    public static void createTable(String tableName) {  
        HBaseAdmin hBaseAdmin =  null; 
        try {  
            hBaseAdmin =  (HBaseAdmin) connection.getAdmin(); 
            if (hBaseAdmin.tableExists(tableName)) {
                System.out.println(tableName + " is exist....");  
                return ;
            }  
            HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));  
            tableDescriptor.addFamily(new HColumnDescriptor(Constants.FAMILY1));  
            hBaseAdmin.createTable(tableDescriptor); 
        } catch (Exception e) {  
            logger.error("", e);  
        } finally {
            if(hBaseAdmin != null)
                try {
                    hBaseAdmin.close();
                } catch (IOException e) {
                    logger.error("", e);
                }
        }
    }
    
    // 添加多條數據 
    public static void addBatch(String tableName, List<Put> puts) {
        Table table = null;
        try {
            table = getTable(tableName);
            table.put(puts);
        } catch (Exception e) {
            logger.error("", e);
        }
    }
    
    // 添加一條數據
    public static void addRow(String tableName, Put put) {
        Table table = null;
        try {
            table = getTable(tableName);
            table.put(put);
        } catch (Exception e) {
            logger.error("", e);
        } 
    }
    
    // 刪除多條數據
    public static void delMultiRows(String tableName, String[] rows) {
        Table table = null;
        try {
            table = getTable(tableName);
            List<Delete> delList = new ArrayList<Delete>();
            for (String row : rows) {
                Delete del = new Delete(Bytes.toBytes(row));
                delList.add(del);
            }
            table.delete(delList);
        } catch (Exception e) {
            logger.error("", e);
        }
    }
    
 // 刪除一條數據
    public static void delSingleRow(String tableName, String row) {
        Table table = null;
        try {
            table = getTable(tableName);
            Delete del = new Delete(Bytes.toBytes(row));
            table.delete(del);
        } catch (Exception e) {
            logger.error("", e);
        }
    }
    
    // 獲取一條數據
    public static Result getRow(String tableName, String row) {
        Table table = null;
        try {
            table = getTable(tableName);
            Get get = new Get(Bytes.toBytes(row));
            Result result = table.get(get);
            return result;
        } catch (Exception e) {
            logger.error("", e);
            return null;
        }
    }
    
    // 條件查詢
    public static ResultScanner scanTable(String tableName, Scan scan) {
        Table table = null;
        try {
            table = getTable(tableName);
            ResultScanner results = table.getScanner(scan);
            return results;
        } catch (Exception e) {
            logger.error("", e);
            return null;
        }
    }

4. 需要在部署機器上添加hbase對應的hosts

來自: http://my.oschina.net/chengxiaoyuan/blog/605617

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!