Hbase创建表 插入数据和获得数据 java代码 【hadoop】

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
 
import java.io.IOException;
public class ExampleForHBase {
    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;
    public static void main(String[] args)throws IOException{
        init();
        createTable("student",new String[]{"score"});   //创建一个表
        insertData("student","zhangsan","score","English","69");   //插入数据
        insertData("student","zhangsan","score","Math","86");
        insertData("student","zhangsan","score","Computer","77");
        getData("student", "zhangsan", "score","English");  //查询单元格里的数据
        close();
    }
 
    public static void init(){
        configuration  = HBaseConfiguration.create(); //配置实例
        configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");  // hadoop路径
        try{
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();  //连接  获取一个管理员对象 生成admin对象
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 
    public static void close(){
        try{
            if(admin != null){
                admin.close();
            }
            if(null != connection){
                connection.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 //创表  表名和列族
    public static void createTable(String myTableName,String[] colFamily) throws IOException {
        TableName tableName = TableName.valueOf(myTableName);  //构造表对象
        if(admin.tableExists(tableName)){
            System.out.println("talbe is exists!");
        }else {
            TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);  //生成一个实例  tablename不单单是一个表名而是一个对象 
            for(String str:colFamily){
                ColumnFamilyDescriptor family(列族对象) = 
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build();//  ColumnFamilyDescriptor 创建列族对象 Bytes.toBytes(str)) 构造字节取出来  family(列族对象) 
                tableDescriptor.setColumnFamily(family);
            }
            admin.createTable(tableDescriptor.build()); //创建表  create 不能直接放表名 需要tableDescriptor 生成实例 
        } 
    }
 //插入数据 
 // 插入数据的表名 行键 、列族、列限定符
    public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException { 
        Table table = connection.getTable(TableName.valueOf(tableName));
        Put put = new Put(rowKey.getBytes());
        put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes());  //取成字节数组 
        table.put(put);
        table.close(); 
    }
 // 获取 数据   行间、列族、列限定符
    public static void getData(String tableName,String rowKey,String colFamily, String col)throws  IOException{ 
        Table table = connection.getTable(TableName.valueOf(tableName));  // 生成对象 
        Get get = new Get(rowKey.getBytes());
        get.addColumn(colFamily.getBytes(),col.getBytes());
        Result result = table.get(get); 
        System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes())));    //列限定符是否为空 
        table.close(); 
    }
}


版权声明:本文为qq_46924416原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。