Hbase JAVA API 增删改查操作

Hbase JAVA API 增删改查操作

创建maven项目
添加pom依赖

​ 打开https://mvnrepository.com/ 搜索hbase

选择hbase-client, 2.2.4版本,点进去复制依赖代码

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>2.2.4</version>
</dependency>
创建表格

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.security.access.Permission;

import java.io.IOException;
import java.util.Scanner;

public class Create_Table {

    public static void main(String[] args) throws IOException {
 		//实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //Admin 类 用于管理表格的名字,创建,删除,有效,失效操作,给定对象admin
        Admin admin = conn.getAdmin();
        //控制台提示输入表格名
        System.out.println("Enter the table name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入对象tb_name,String类型
        String tb_name= sc.next();
        //TableDescriptorBuilder 类 用于列族创建和定义,tdb为对象,TableName.valueOf(tb_name)传入刚才定义的表格名字参数
        TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(TableName.valueOf(tb_name));
        //使用etColumnFamily方法,以及TableDescriptorBuilder下的ColumnFamilyDescriptorBuilder实例来添加和定义列族
        //此处分别为Per_Info,Edu_Info两个列族
        tdb.setColumnFamily(ColumnFamilyDescriptorBuilder.of("Per_Info")).build();
        tdb.setColumnFamily(ColumnFamilyDescriptorBuilder.of("Edu_Info")).build();
        //使用 Admin类 admin对象 createTable方法,将tdb里的表格名+列族名参数传入,表格创建完毕
        admin.createTable(tdb.build());
        //控制台打印提示创建成功
        System.out.println("Table created successfully");
        //使用 Admin类 admin对象 close方法关闭hbase连接
        admin.close();
    }

}


表格失效

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;
import java.util.Scanner;

public class Disable_Table {
    public static void main(String[] args) throws IOException {
        //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
      
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //Admin 类 用于管理表格的名字,创建,删除,有效,失效操作,给定对象admin
        Admin admin = conn.getAdmin();
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
         //将读取的表格名存入对象tb_name,String类型
        String tb_name = sc.next();
        //使用 Admin类 admin对象 isTableDisabled方法查看表格失效情况,并将结果存入对象isDisable,类型为布尔类型
        Boolean isDisabled = admin.isTableDisabled(TableName.valueOf(tb_name));
        //如果表格有效
        if(isDisabled==false)
        //则提示表格是有效的
            System.out.println("Table is Enabled");
        //如果表格失效
        else
        //则提示表格是失效的
            System.out.println("Table is Disabled");
        //如果表格有效
        if(!isDisabled)
        {
        //使用 Admin类 admin对象 disabTable方法,传入表格名参数将表格失效
            admin.disableTable(TableName.valueOf(tb_name));
        //控制台提示表格失效成功
            System.out.println("Table is Disabled now");
        }
    }
}


删除表格

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;
import java.util.Scanner;

public class Drop_table {
    public static void main(String[] args) throws IOException {
        //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
      
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //Admin 类 用于管理表格的名字,创建,删除,有效,失效操作,给定对象admin
        Admin admin = conn.getAdmin();
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入对象tb_name,String类型
        String tb_name = sc.next();
        //使用 Admin类 admin对象 isTableDisabled方法查看表格失效情况,并将结果存入对象isDisable,类型为布尔类型
        Boolean isDisabled = admin.isTableDisabled(TableName.valueOf(tb_name));
		//如果表格为有效状态
        if(isDisabled==false) {
        //使用 Admin类 admin对象 disableTable方法将表格失效
            admin.disableTable(TableName.valueOf(tb_name));
        //使用 Admin类 admin对象 deleteTable方法将表格删除
            admin.deleteTable(TableName.valueOf(tb_name));
        }
        //如果表格为失效状态
        else
        //使用 Admin类 admin对象 deleteTable方法将表格删除
            admin.deleteTable(TableName.valueOf(tb_name));
        //控制台打印提示表格成功删除
        System.out.println("Table Dropped successfuly");
        //关闭admin表格管理
        admin.close();
        //关闭hbase连接
        conn.close();
    }
}


删除数据

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;

public class Delete_Data {
    public static void main(String[] args) throws IOException {
        //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
      
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //Admin 类 用于管理表格的名字,创建,删除,有效,失效操作,给定对象admin
        Admin admin = conn.getAdmin();
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入对象tb_name,String类型
        String tb_name = sc.next();
        //Table 类 用于表格数据更改 table对象,表格名称数据参数传入
        Table table = conn.getTable(TableName.valueOf(tb_name));
        //控制台提示(“请输入行键”)
        System.out.println("Enter the row key:");
        //将输入的数字读入 rk 对象,String类型
        String rk = sc.next();
        //Delete 类用于删除 del对象 Hbase中数据都是字节类型,所以要将刚才的行键转化为字节类型,并存入del对象
        Delete del = new Delete(Bytes.toBytes(rk));
        //使用 Delete 类 del对象 addColumn方法 设置要删除的列族的列,都要转成字节类型操作
        //此处删除某一行的cf2列族,degree列,如果你的表格没有,请根据自己的表格格式更改
        del.addColumn(Bytes.toBytes("cf2"),Bytes.toBytes("degree"));
        //使用 Table类 table对象 delete方法 传入del对象包含的表格名行键列族名列名参数,删除表格数据
        table.delete(del);
        //控制台提示删除数据成功
        System.out.println("Data Deleted Successfully");
        //table表格更改关闭
        table.close();
        //连接hbase关闭
        conn.close();



    }
}


删除多个数据 使用List数组

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

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

public class List_Delete {
    public static void main(String[] args) throws IOException {
        //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
      
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //Admin 类 用于管理表格的名字,创建,删除,有效,失效操作,给定对象admin
        Admin admin = conn.getAdmin();
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入对象tb_name,String类型
        String tb_name = sc.next();
        //Table 类 用于表格数据更改 table对象,表格名称数据参数传入
        Table table = conn.getTable(TableName.valueOf(tb_name));
        //Delete 类, 设置删除行键为1, 存入del1对象
        Delete del1 = new Delete(Bytes.toBytes("1"));
        //使用 Delete类 del1对象 addColumn方法 设置列族为cf1,列为age
        del1.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("age"));
        //Delete 类, 设置删除行键为12, 存入del2对象
        Delete del2 = new Delete(Bytes.toBytes("12"));
        //使用 Delete类 del2对象 addColumn方法 设置列族为cf1,列为name
        del1.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("name"));
        //Delete 类, 设置删除行键为4, 存入del3对象
        Delete del3 = new Delete(Bytes.toBytes("4"));
        //使用 Delete类 del3对象 addColumn方法 设置列族为cf1,列为name
        del1.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("name"));
        //List类 创建一个数组类型的Delete,对象list
        List<Delete> list = new ArrayList<Delete>();
        //使用List类,list对象,add方法,将del1 del2 del3参数传入数组
        list.add(del1);
        list.add(del2);
        list.add(del3);
        //使用Table类 table对象 delete方法,传入list对象参数,删除数组数据,即三个表格数据同时删除
        table.delete(list);
        //控制台打印数据删除成功提示
        System.out.println("Data Deleted Successfully");
        //关闭更改表格
        table.close();
        //关闭hbase连接
        conn.close();
    }
}


插入数据

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;

public class Insert_Data {
    public static void main(String[] args) throws IOException {
    	//实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
      
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //Admin 类 用于管理表格的名字,创建,删除,有效,失效操作,给定对象admin
        Admin admin = conn.getAdmin();
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入变量tb_name,String类型
        String tb_name = sc.next();
        //Table 类 用于表格数据更改 table对象,表格名称数据参数传入
        Table table = conn.getTable(TableName.valueOf(tb_name));
        //控制台提示输入插入数据的行键
        System.out.println("Enter the row key:");
        //读取的行间数据放入rk这个变量,String类型
        String rk = sc.next();
        //Put 类 用于数据插入,将rk行键参数传入 p对象, 全部转化为字节类型
        Put p = new Put(Bytes.toBytes(rk));
        //使用 Put类 p对象 addColumn方法插入具体数据,第一个为列族,第二个为列,第三个为值,全部转化为字节类型
        p.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("Lily"));
        p.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("age"),Bytes.toBytes("20"));
        p.addColumn(Bytes.toBytes("cf2"),Bytes.toBytes("degree"),Bytes.toBytes("MBA"));
        //使用Table类 table对象 put方法,传入参数p,包含表格名,列族,列,值
        table.put(p);
        //控制台提示插入数据成功
        System.out.println("Data inserted successfully");
        //关闭表格更改
        table.close();
        //关闭hbase链接
        conn.close();

    }
}

插入多个数据,使用List数组

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

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

public class List_Insert {
    public static void main(String[] args) throws IOException {
       //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
      
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入变量tb_name,String类型
        String tb_name = sc.next();
        //Table 类 用于表格数据更改 table对象,表格名称数据参数传入
        Table table = conn.getTable(TableName.valueOf(tb_name));
        //使用 Put 类 p1对象插入行键为7,列族为cf1,列为name,值为Miry
        Put p1 = new Put(Bytes.toBytes("7"));
        p1.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("Miry"));
        //使用 Put 类 p2对象插入行键为8,列族为cf1,列为name,值为Peter
        Put p2 = new Put(Bytes.toBytes("8"));
        p2.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("Peter"));
        //使用 Put 类 p3对象插入行键为9,列族为cf1,列为name,值为Mike
        Put p3 = new Put(Bytes.toBytes("9"));
        p3.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("Mike"));
        //List类 创建一个数组类型的Put,对象list
        List<Put> list = new ArrayList<Put>();
        //使用List类,list对象,add方法,将p1,p2,p3 参数传入数组
        list.add(p1);
        list.add(p2);
        list.add(p3);
        //使用Table类 table对象 put方法插入数据至表格,参数为list
        table.put(list);
        //控制台提示数据插入成功
        System.out.println("Data inserted successfully");
        //关闭表格更改
        table.close();
        //关闭hbase链接
        conn.close();

    }
}


读取数据GET

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;

public class ReadData_GET {
    public static void main(String[] args) throws IOException {
       //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration con = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址,此处配置在hbase-site.xml
        con.set("hbase.zookeeper.quorum","192.168.237.200");
       
		//Connection类创建连接,传入con对象参数实现hbase连接
        Connection conn = ConnectionFactory.createConnection(con);
        //控制台提示输入表格名
        System.out.println("Enter the table Name:");
        //控制台扫描提取输入的表格名
        Scanner sc = new Scanner(System.in);
        //将读取的表格名存入变量tb_name,String类型
        String tb_name = sc.next();
        //Table 类 用于表格数据更改 table对象,表格名称数据参数传入
        Table table = conn.getTable(TableName.valueOf(tb_name));
        //控制台提示输入行键
        System.out.println("Enter the row key:");
        //提取的行键数据存入rk变量
        String rk = sc.next();
        //Get 类 g对象 用于hbase表格数据提取,传入参数行键rk,存入对象g
        Get g = new Get(Bytes.toBytes(rk));
        //Result 类 result对象 用于结果返回提取,传入参数对象gw,存入result对象
        Result result = table.get(g);
        //通过 Result类 result对象 getValue方法 提取列族和列名,都是字节类型
        byte[] name = result.getValue(Bytes.toBytes("cf1"),Bytes.toBytes("name"));
        byte[] age = result.getValue(Bytes.toBytes("cf1"),Bytes.toBytes("age"));
        byte[] degree =result.getValue(Bytes.toBytes("cf2"),Bytes.toBytes("degree"));
        //控制台提示输出转化为String类型的对应数据
        System.out.println("Name = "+Bytes.toString(name));
        System.out.println("Age = "+Bytes.toString(age));
        System.out.println("Degree = "+Bytes.toString(degree));
        //关闭表格更改
        table.close();
        //关闭hbase链接
        conn.close();
    }
}


e[] age = result.getValue(Bytes.toBytes(“cf1”),Bytes.toBytes(“age”));
byte[] degree =result.getValue(Bytes.toBytes(“cf2”),Bytes.toBytes(“degree”));
//控制台提示输出转化为String类型的对应数据
System.out.println("Name = "+Bytes.toString(name));
System.out.println("Age = "+Bytes.toString(age));
System.out.println("Degree = "+Bytes.toString(degree));
//关闭表格更改
table.close();
//关闭hbase链接
conn.close();
}
}


  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值