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();

}

}

复制代码
相关推荐
鸿永与33 分钟前
『SQLite』表达式操作
数据库·sqlite
ggdpzhk1 小时前
idea 编辑竖列:alt +shift+insert
java·ide·intellij-idea
hikktn2 小时前
Java 兼容读取WPS和Office图片,结合EasyExcel读取单元格信息
java·开发语言·wps
迪迦不喝可乐2 小时前
软考 高级 架构师 第十一章 面向对象分析 设计模式
java·设计模式
檀越剑指大厂3 小时前
【Java基础】使用Apache POI和Spring Boot实现Excel文件上传和解析功能
java·spring boot·apache
苹果酱05673 小时前
Golang的网络流量分配策略
java·spring boot·毕业设计·layui·课程设计
Bytebase3 小时前
MySQL 如何赶上 PostgreSQL 的势头?
运维·数据库·dba·开发者·数据库管理·devops
孑么3 小时前
GDPU Android移动应用 重点习题集
android·xml·java·okhttp·kotlin·android studio·webview
未命名冀4 小时前
微服务面试相关
java·微服务·面试
acegi135794 小时前
MySQL - 子查询和相关子查询详解
数据库·mysql