Hbase Basic

启动:start-hbase.sh

停止:stop-hbase.sh

进入shell:hbase shell

  状态:status

  创建表:create 'tableName', 'colFam1'

  查看表包含行数:list 'tableName'

  列出所有:scan 'tableName'

  插入:put 'tableName', 'rowName', 'colFam1:qualify', 'value'

  查询:get 'tableName', 'rowName'

  删除:delete 'tableName', 'rowName'

  禁用表:disable 'tableName'

  删除表:drop 'tableName'

  退出shell:exit


添加列族: java实现

disable 'tableName'

alter 'tableName', NAME=>'fam2'

enable 'tableName'

删除列族:alter 'tableName', {NAME=>'fam2', METHOD=>'delete'}
获取指定时间的值:get 'my','id1',{COLUMN=>'fam1:q1',TIMESTAMP=>1408261511642}
计数器:incr 'my','id2','fam1:age'
查询计数:get_counter 'my','id1','fam1:age',


HBaseHelper

package util;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * Used by the book examples to generate tables and fill them with test data.
 */
public class HBaseHelper {

  private Configuration conf = null;
  private HBaseAdmin admin = null;

  protected HBaseHelper(Configuration conf) throws IOException {
    this.conf = conf;
    this.admin = new HBaseAdmin(conf);
  }

  public static HBaseHelper getHelper(Configuration conf) throws IOException {
    return new HBaseHelper(conf);
  }

  public boolean existsTable(String table)
  throws IOException {
    return admin.tableExists(table);
  }

  public void createTable(String table, String... colfams)
  throws IOException {
    createTable(table, null, colfams);
  }

  public void createTable(String table, byte[][] splitKeys, String... colfams)
  throws IOException {
    HTableDescriptor desc = new HTableDescriptor(table);
    for (String cf : colfams) {
      HColumnDescriptor coldef = new HColumnDescriptor(cf);
      desc.addFamily(coldef);
    }
    if (splitKeys != null) {
      admin.createTable(desc, splitKeys);
    } else {
      admin.createTable(desc);
    }
  }

  public void disableTable(String table) throws IOException {
    admin.disableTable(table);
  }

  public void dropTable(String table) throws IOException {
    if (existsTable(table)) {
      disableTable(table);
      admin.deleteTable(table);
    }
  }

  public void fillTable(String table, int startRow, int endRow, int numCols,
                        String... colfams)
  throws IOException {
    fillTable(table, startRow, endRow, numCols, -1, false, colfams);
  }

  public void fillTable(String table, int startRow, int endRow, int numCols,
                        boolean setTimestamp, String... colfams)
  throws IOException {
    fillTable(table, startRow, endRow, numCols, -1, setTimestamp, colfams);
  }

  public void fillTable(String table, int startRow, int endRow, int numCols,
                        int pad, boolean setTimestamp, String... colfams)
  throws IOException {
    fillTable(table, startRow, endRow, numCols, pad, setTimestamp, false, colfams);
  }

  public void fillTable(String table, int startRow, int endRow, int numCols,
                        int pad, boolean setTimestamp, boolean random,
                        String... colfams)
  throws IOException {
    HTable tbl = new HTable(conf, table);
    Random rnd = new Random();
    for (int row = startRow; row <= endRow; row++) {
      for (int col = 0; col < numCols; col++) {
        Put put = new Put(Bytes.toBytes("row-" + padNum(row, pad)));
        for (String cf : colfams) {
          String colName = "col-" + padNum(col, pad);
          String val = "val-" + (random ?
            Integer.toString(rnd.nextInt(numCols)) :
            padNum(row, pad) + "." + padNum(col, pad));
          if (setTimestamp) {
            put.add(Bytes.toBytes(cf), Bytes.toBytes(colName),
              col, Bytes.toBytes(val));
          } else {
            put.add(Bytes.toBytes(cf), Bytes.toBytes(colName),
              Bytes.toBytes(val));
          }
        }
        tbl.put(put);
      }
    }
    tbl.close();
  }

  public String padNum(int num, int pad) {
    String res = Integer.toString(num);
    if (pad > 0) {
      while (res.length() < pad) {
        res = "0" + res;
      }
    }
    return res;
  }

  public void put(String table, String row, String fam, String qual,
                  String val) throws IOException {
    HTable tbl = new HTable(conf, table);
    Put put = new Put(Bytes.toBytes(row));
    put.add(Bytes.toBytes(fam), Bytes.toBytes(qual), Bytes.toBytes(val));
    tbl.put(put);
    tbl.close();
  }

  public void put(String table, String row, String fam, String qual, long ts,
                  String val) throws IOException {
    HTable tbl = new HTable(conf, table);
    Put put = new Put(Bytes.toBytes(row));
    put.add(Bytes.toBytes(fam), Bytes.toBytes(qual), ts,
            Bytes.toBytes(val));
    tbl.put(put);
    tbl.close();
  }

  public void put(String table, String[] rows, String[] fams, String[] quals,
                  long[] ts, String[] vals) throws IOException {
    HTable tbl = new HTable(conf, table);
    for (String row : rows) {
      Put put = new Put(Bytes.toBytes(row));
      for (String fam : fams) {
        int v = 0;
        for (String qual : quals) {
          String val = vals[v < vals.length ? v : vals.length - 1];
          long t = ts[v < ts.length ? v : ts.length - 1];
          put.add(Bytes.toBytes(fam), Bytes.toBytes(qual), t,
            Bytes.toBytes(val));
          v++;
        }
      }
      tbl.put(put);
    }
    tbl.close();
  }

  public void dump(String table, String[] rows, String[] fams, String[] quals)
  throws IOException {
    HTable tbl = new HTable(conf, table);
    List<Get> gets = new ArrayList<Get>();
    for (String row : rows) {
      Get get = new Get(Bytes.toBytes(row));
      get.setMaxVersions();
      if (fams != null) {
        for (String fam : fams) {
          for (String qual : quals) {
            get.addColumn(Bytes.toBytes(fam), Bytes.toBytes(qual));
          }
        }
      }
      gets.add(get);
    }
    Result[] results = tbl.get(gets);
    for (Result result : results) {
      for (KeyValue kv : result.raw()) {
        System.out.println("KV: " + kv +
          ", Value: " + Bytes.toString(kv.getValue()));
      }
    }
  }
}

Main

package test;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

import util.HBaseHelper;

public class Main {

    public static void main(String[] args) throws IOException {
        Configuration conf = HBaseConfiguration.create(); 
        HBaseHelper helper = HBaseHelper.getHelper(conf);
        String tableName = "testtable";
        
        if (helper.existsTable(tableName)) {
            helper.dropTable(tableName);
        }        
        helper.createTable(tableName, "colfam1");
        
        HTable table = new HTable(conf, tableName); 
        Put put = new Put(Bytes.toBytes("row1")); 
        put.add(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1"),
                  Bytes.toBytes("val1")); 
        put.add(Bytes.toBytes("colfam1"), Bytes.toBytes("qual2"),
                  Bytes.toBytes("val2")); 
        table.put(put); 

    }

}

 

posted @ 2014-08-12 14:55  Man_华  阅读(371)  评论(0编辑  收藏  举报