博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三、hbase JavaAPI
阅读量:6968 次
发布时间:2019-06-27

本文共 6483 字,大约阅读时间需要 21 分钟。

hbase是Java编写的,当然也提供了Java的API来操作hbase。

如果你是使用虚拟机来安装配置hbase那么你需要配置一下hostname,不然JavaAPI访问虚拟机的时候会无法连接,请参考:

同时请注意关闭防火墙,如果你的虚拟机启动会默认开启防火墙的话,你需要关闭。

一、依赖

hbase客户端依赖如下:

org.apache.hbase
hbase-client
1.2.0

注意:hbase官方版本截止本文已经是2.1.1,但是这里使用1.2.0是由于官方文档并没有及时更新文档,所以对于client的使用你只能看到javadocs很不方便,亦或者你使用它文档的类的时候发现都是deprecated的线。

二、代码示例

以下的代码约200行,但内容并不复杂,仅有以下三块内容

1、在static块里面初始化了hbase的连接

2、main方法里面调用增删改查等JavaAPI接口,各个方法实现相应的内容

3、最后还有一个close方法

我们先看一下输出:

从输出内容我们看到,对表进行了删除、创建、列表查询,然后对表的单元格数据进行了新增、查询、遍历、删除

完整代码如下

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import java.io.IOException;import java.util.Arrays;/** * @Description java api * @Author lay * @Date 2018/11/12 13:10 */public class HbaseJavaApiDemo {    private static Configuration configuration;    private static Connection connection;    private static Admin admin;    private static final String ENCODE = "UTF-8";    static {        // 创建configuration        configuration = HBaseConfiguration.create();        // 设置HBase的zk地址和端口        configuration.set("hbase.zookeeper.quorum", "master");        configuration.set("hbase.zookeeper.property.clientPort", "2181");        try {            connection = ConnectionFactory.createConnection(configuration);            admin = connection.getAdmin();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) throws Exception {        try {            String table = "t_user";            String row = "row1";            String columnFamily = "cf_name";            String column = "firstName";            String value = "lay";            deleteTable(table);            createOrOverrideTable(table, columnFamily);            listTables();            putData(table, row, columnFamily, column, value);            getData(table, row, columnFamily, column);            scanData(table);            deleteData(table, row, columnFamily, column);        } finally {            close();        }    }    /**     * 创建表     * @param table 表名     * @param columnFamily 列簇     * @throws IOException     */    public static void createOrOverrideTable(String table, String columnFamily) throws IOException {        TableName tableName = TableName.valueOf(table);        HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);        // 添加一个列簇        HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(columnFamily);        tableDescriptor.addFamily(hColumnDescriptor);        // 存在则删除        deleteTable(table);        admin.createTable(tableDescriptor);        System.out.println(table + " 表创建完成");    }    /**     * 列出所有表     * @throws IOException     */    public static void listTables() throws IOException {        HTableDescriptor[] hTableDescriptors = admin.listTables();        System.out.println("列出所有的表:");        for (HTableDescriptor t : hTableDescriptors) {            System.out.println(t.getTableName());        }    }    /**     * 删除表     * @param table 表名     * @throws IOException     */    public static void deleteTable(String table) throws IOException {        TableName tableName = TableName.valueOf(table);        if (admin.tableExists(tableName)) {            admin.disableTable(tableName);            admin.deleteTable(tableName);            System.out.println(table + " 存在并执行删除");        }    }    /**     * 添加数据     * @param table 表名     * @param row 行     * @param columnFamily 列簇     * @param column 列     * @param value 值     * @throws IOException     */    public static void putData(String table, String row, String columnFamily, String column, String value) throws IOException {        TableName tableName = TableName.valueOf(table);        Put put = new Put(row.getBytes(ENCODE));        put.addColumn(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE), value.getBytes(ENCODE));        Table iTable = connection.getTable(tableName);        iTable.put(put);        iTable.close();        System.out.println("数据添加完毕");    }    /**     * 查询数据     * @param table     * @param row     * @param columnFamily     * @param column     * @throws IOException     */    public static void getData(String table, String row, String columnFamily, String column) throws IOException {        TableName tableName = TableName.valueOf(table);        Get get = new Get(row.getBytes(ENCODE));        Table iTable = connection.getTable(tableName);        Result result = iTable.get(get);        byte[] data = result.getValue(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE));        System.out.println("查询的数据:" + new String(data));        iTable.close();    }    /**     * 删除数据     * @param table     * @param row     * @param columnFamily     * @param column     * @throws IOException     */    public static void deleteData(String table, String row, String columnFamily, String column) throws IOException {        TableName tableName = TableName.valueOf(table);        Delete delete = new Delete(row.getBytes(ENCODE));        delete.addColumn(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE));        Table iTable = connection.getTable(tableName);        iTable.delete(delete);        iTable.close();        System.out.println("数据删除完毕");    }    /**     * 扫描数据     * @param table     * @throws IOException     */    public static void scanData(String table) throws IOException {        TableName tableName = TableName.valueOf(table);        Scan scan = new Scan();        Table iTable = connection.getTable(tableName);        ResultScanner resultScanner = iTable.getScanner(scan);        for (Result r : resultScanner) {            Cell[] cells = r.rawCells();            System.out.println("遍历的数据结果:");            Arrays.stream(cells).forEach(cell -> {                String value = new String(CellUtil.cloneValue(cell));                System.out.println(value);            });        }        iTable.close();    }    /**     * 关闭admin和connection     */    public static void close() {        if (admin != null) {            try {                admin.close();            } catch (IOException e) {                throw new RuntimeException(e);            }        }        if (connection != null) {            try {                connection.close();            } catch (IOException e) {                throw new RuntimeException(e);            }        }    }}

 

转载于:https://www.cnblogs.com/lay2017/p/9953901.html

你可能感兴趣的文章
php:file()与file_get_contents():讲日志文件没行读为数组形式
查看>>
一起talk C栗子吧(第一百二十一回:C语言实例--线程知识体系图)
查看>>
php/oracle: 解析oracle表中的NCLOB,CLOB字段里面的内容
查看>>
SGU - 186 - The Chain (贪心)
查看>>
自建docker swarm体验简单之美
查看>>
微信定制开发怎么做?
查看>>
LeetCode Unique Paths
查看>>
Memcachedclientutils类
查看>>
POJ - 3352 Road Construction(边双连通分量)
查看>>
【转】Castle Windsor之组件注册
查看>>
免费馅饼
查看>>
Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用
查看>>
SQL Server中有关约束(constraint)的一些细节
查看>>
使用Nginx实现灰度发布
查看>>
(转载)WPF中的动画——(一)基本概念
查看>>
HDU4876:ZCC loves cards
查看>>
用C语言实现websocket服务器
查看>>
python读取.mat文件
查看>>
JAVA-JSP注释
查看>>
RSA加密异常
查看>>