hbase的api操作

创建maven工程,修改jdk

pom文件里添加需要的jar包

dependencies>

  <dependency>

                     <groupId>jdk.tools</groupId>

                     <artifactId>jdk.tools</artifactId>

                     <version>1.8</version>

                     <scope>system</scope>

                     <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>

              </dependency>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  <dependency>

    <groupId>org.apache.hbase</groupId>

    <artifactId>hbase-it</artifactId>

    <version>1.2.5</version>

    <type>pom</type>

</dependency> 

  <dependency>

     <groupId>org.apache.hadoop</groupId>

     <artifactId>hadoop-common</artifactId>

     <version>2.6.1</version>

  </dependency>

  </dependencies>

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

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
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.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.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;


public class CreateTableTest {

    static Configuration conf = HBaseConfiguration.create();//读取hbase的配置文件
    
    static HBaseAdmin admin = null;//执行管理员
    
    
public static void main(String[] args) throws Exception{
    
    admin=new HBaseAdmin(conf);
//    createTable();
//    listTable();
//    deleteTable();
//    listTable();
//    putData();
//    scanTable();
    getData();
//    putaLots();
    
    
    
}
//创建表
public static void createTable() throws Exception, IOException{
        //表的描述对象
        HTableDescriptor table=new HTableDescriptor(TableName.valueOf("javaemp1"));
        //列簇
        table.addFamily(new HColumnDescriptor("personal"));
        table.addFamily(new HColumnDescriptor("professional"));
        
        admin.createTable(table);
        System.out.println("create table finished");
}
//列出所有的表
public static void listTable() throws IOException{
    HTableDescriptor[] Tablelist = admin.listTables();
    for(int i=0;i<Tablelist.length;i++)
    {
        System.out.println(Tablelist[i].getNameAsString());
    }
}
//删除表
public static void deleteTable() throws Exception{
    //删表之前先禁用表
//    admin.disableTable("javaemp1");
//    admin.deleteTable("javaemp1");
//    System.out.println("delete finished");

    //删除表中的某一列簇
//    admin.deleteColumn("javaemp","professional");
//    System.out.println("delete column");
    
    //增加一列
    admin.addColumn("javaemp",new HColumnDescriptor("professional"));
    System.out.println("add column");
    
}
//----------------------------------------------------------------------------------------------------------
//插入数据
public static void putData() throws Exception{
    //HTable类实现对单个表的操作,参数为:配置对象,表名
    HTable table = new HTable(conf,"javaemp");
    
    Put p = new Put(Bytes.toBytes("1001"));//实例化Put类,指定rwo key来操作
    Put p1=new Put(Bytes.toBytes("1002"));
    //
    p.add(Bytes.toBytes("personal"),Bytes.toBytes("name"),Bytes.toBytes("lalisa"));
//    参数:列簇,列,值
    p.add(Bytes.toBytes("personal"),Bytes.toBytes("city"),Bytes.toBytes("beijing"));
    
    table.put(p);
    
    p1.add(Bytes.toBytes("professional"),Bytes.toBytes("designation"),Bytes.toBytes("it"));
    p1.add(Bytes.toBytes("professional"),Bytes.toBytes("salary"),Bytes.toBytes("16010"));
    
    table.put(p1);
    
    System.out.println("put data finished");
    
    table.close();//释放HTable的资源
}
//批量插入数据
public static void putaLots() throws IOException{
    HTable table = new HTable(conf,"javaemp");
    ArrayList<Put> list = new ArrayList<Put>(10);
    for (int i=0;i<10;i++)
    {
        Put put = new Put(Bytes.toBytes("row"+i));
        put.add(Bytes.toBytes("personal"),Bytes.toBytes("name"),Bytes.toBytes("people"+i));
        list.add(put);
    }
    table.put(list);
    System.out.println("put list finished");
    }
//获取某一列数据
public static void getData() throws IOException{
    HTable table = new HTable(conf, "javaemp");
    
    Get get = new Get(Bytes.toBytes("1001"));//实例化Get类
    
    Result result = table.get(get);//获取这一row的数据
    
//    输出这一行的某一个字段
    byte[] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));    
    String  name=Bytes.toString(value);
    System.out.println("Name:"+name);
    
    //输出这一行的所有数据
    Cell[] cells = result.rawCells();
    for(Cell cell:cells)
    {
        System.out.print(Bytes.toString(CellUtil.cloneRow(cell))+"--");
        System.out.print(Bytes.toString(CellUtil.cloneFamily(cell))+":");
        System.out.print(Bytes.toString(CellUtil.cloneQualifier(cell))+"->");
        System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
        
    }
    
    table.close();//释放HTable的资源
}
//scan某一列
public static void scanTable() throws IOException{
    HTable table = new HTable(conf, "javaemp");
    Scan scan = new Scan();                    //    实例化Scan类
    scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));//scan某列簇的某列
    scan.addFamily(Bytes.toBytes("professional"));//scan某列簇
    ResultScanner scanner = table.getScanner(scan);
    
    for(Result res=scanner.next();res!=null;res=scanner.next())
    {
        System.out.println(res);
    }
    table.close();//释放HTable的资源
}
//统计row key的个数
public static void count(){
    
}
//关闭hbase
public  static void close() throws IOException{
    admin.shutdown();
}
}

 

package com.neworigin.Work;

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

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
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.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.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class HbaseWork {
    
    static Configuration conf=HBaseConfiguration.create();
//    static Connection conn= ConnectionFactory.createConnection(conf);
    static HBaseAdmin admin=null;
public static void createTable() throws IOException{
    HTableDescriptor table=new HTableDescriptor(TableName.valueOf("member"));
    table.addFamily(new HColumnDescriptor("member_id"));
    table.addFamily(new HColumnDescriptor("address"));
    table.addFamily(new HColumnDescriptor("info"));
    admin.createTable(table);
    System.out.println("create table finished");
}
public static void deletefamily() throws IOException{
//    HTableDescriptor table = new HTableDescriptor(TableName.valueOf("member"));
    admin.deleteColumn("member", "member_id");
    System.out.println("delete");
}
public static void insertdata() throws IOException{
    HTable table = new HTable(conf,"member");
    ArrayList<Put> list =new ArrayList<Put>(25);
    for(int i=0;i<5;i++)
    {
        Put put = new Put(Bytes.toBytes("row"+i));
        put.add(Bytes.toBytes("address"), Bytes.toBytes("province"), Bytes.toBytes("pr"+i));
        put.add(Bytes.toBytes("address"), Bytes.toBytes("city"), Bytes.toBytes("ct"+i));
        put.add(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("2"+i));
        put.add(Bytes.toBytes("info"), Bytes.toBytes("birthday"), Bytes.toBytes("data"+i));
        put.add(Bytes.toBytes("info"), Bytes.toBytes("company"), Bytes.toBytes("com"+i));
        list.add(put);
    }
    table.put(list);
}
public static void getinfo() throws IOException{
    HTable table = new HTable(conf, "member");
//    for(int i=0;i<5;i++)
//    {
//        
//    }
    Get get = new Get(Bytes.toBytes(("row0")));
    Result result = table.get(get);
    for(Cell cell: result.rawCells())
    {
        System.out.print(Bytes.toString(CellUtil.cloneRow(cell))+"--");
        System.out.print(Bytes.toString(CellUtil.cloneFamily(cell))+":");
        System.out.print(Bytes.toString(CellUtil.cloneQualifier(cell))+"->");
        System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
    }
    
}
public static void alterfirstrow() throws IOException{
    HTable table = new HTable(conf, "member");
    Put put = new Put(Bytes.toBytes("row0"));
    put.add(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("30"));
    table.put(put);
}
public static void getage() throws IOException{
    HTable table = new HTable(conf,"member");
    Get get = new Get(Bytes.toBytes("row0"));
    Result result = table.get(get);
    byte[] bs = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age"));
    String age=Bytes.toString(bs);
    System.out.println("age:"+age);
}
public static void scanTable() throws IOException{
    Scan scan = new Scan();
    HTable table = new HTable(conf,"member");
    scan.addColumn(Bytes.toBytes("address"), Bytes.toBytes("province"));
    scan.addColumn(Bytes.toBytes("address"), Bytes.toBytes("city"));
    scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"));
    scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("birthday"));
    scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("company"));
    ResultScanner scanner = table.getScanner(scan);
    for(Result res=scanner.next();res!=null;res=scanner.next())
    {
        System.out.println(res);
    }
}
public static void countrow() throws IOException{
    HTable table = new HTable(conf,"member");
    Scan scan = new Scan(); 
    ResultScanner scanner = table.getScanner(scan);
    int i=0;
    while(scanner.next()!=null)
    {
        i++;
//        System.out.println(scanner.next());
    }
    System.out.println(i);
}
public static void delTable() throws IOException{
    boolean b = admin.isTableEnabled("member");
    if(b)
    {
        admin.disableTable("member");
    }
    admin.deleteTable("member");
}
public static void main(String[] args) throws IOException {
    admin=new HBaseAdmin(conf);
//    createTable();
//    deletefamily();
//    insertdata();
//    alterfirstrow();
//    getinfo();
//    getage();
//    scanTable();
//    countrow();
    delTable();
}
}
原文地址:https://www.cnblogs.com/chengdonghui/p/7978276.html