基础:使用 Java API 对 Hbase 数据库进行操作

354 阅读2分钟

本文已参加「新人创作礼」活动,一起开启掘金创作之路。

这次带来的是利用 Java API 对 Hbase 的数据库操作。

我们可以非常简单的利用 Java API 实现很多针对 Hbase 的操作,例如下面的四个实例:

实例说明

  • addvalue函数:向数据库中添加新的值

    • 输入:行键,列簇,列,新值

    • 输出:向数据库中添加操作

  • createTable :创建表的函数

    • 输入:null

    • 输出:数据库中的添加新的表

  • delete函数,从数据库中删除制定单元格的数据

    • 输入:行键,列簇,列,删除的方式

    • 输出:从数据库中删除对应的值

  • getData函数,从数据库中获取数据

    • 输入参数:行键,列簇,列

    • 输出:该cell的值

相关代码

main.java

import java.io.IOException;

import Hbase.Util;

public class main {

    public static void main(String[] args) throws Exception {

        System.out.println("hello");

        Util.setUp();

        Util.createTable();

        Util.addValue("gbh","info","age","21");

                Util.getData("gbh_javaAPI_work","gbh","info","age");
    }
}

 

Util.java

package Hbase;

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.*;

import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;

 

import java.io.IOException;

 

import static java.nio.charset.StandardCharsets.*;

 

public class Util {

    public static Connection connection=null;

    public static Admin admin=null;

 

    /**

     * @throws IOException

     *

     *         1.sudo dhclient -v 获得ip地址获后,写入Ubuntu的/etc/hosts下,并允许hostname master

     *         2.windows "C:\Windows\System32\drivers\etc" 添加 <ip> master

     *         3.检验是否能连通.

     */

    public static void setUp() throws IOException {

        Configuration configuration = HBaseConfiguration.create();

        configuration.set("hbase.zookeeper.quorum", "hadoop.xwyzsn.site");

        configuration.set("hbase.zookeeper.property.clientPort", "9999");

 

        //取得一个数据库连接对象

        connection= ConnectionFactory.createConnection(configuration);

        admin=connection.getAdmin();

        System.out.println("success");

    }

    public static void createTable() throws Exception {

        System.out.println("开始创建表");

        TableName tableName = TableName.valueOf("gbh_javaAPI_work");

        TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);

        ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info")).build();

        tableDescriptor.setColumnFamily(family);

        admin.createTable(tableDescriptor.build());

        System.out.println("创建成功");

    }

    public static void addValue(String row, String cf, String col, String newValue) throws IOException {

        TableName tableName =TableName.valueOf("gbh_javaAPI_work");

        Table table = connection.getTable(tableName);

        Put put = new Put(row.getBytes(UTF_8));

        put.addColumn(cf.getBytes(UTF_8),col.getBytes(UTF_8),newValue.getBytes(UTF_8));

        table.put(put);

        table.close();

    }

 

    public static void delect (String Table ,String row,String cf,String col,String method ) throws IOException {

        TableName tableName = TableName.valueOf(Table);

        Table table = connection.getTable(tableName);

        Delete delete = new Delete(row.getBytes(UTF_8));

        if (method.equals("1")){

            delete.addColumn(cf.getBytes(UTF_8),col.getBytes(UTF_8));

        }else{

 

        }

        table.close();

    }

    public static String getData(String Table,String rowKey,String ColFamily,String col) throws Exception {

        Get get = new Get(Bytes.toBytes(rowKey));

        TableName tableName = TableName.valueOf(Table.getBytes(UTF_8));

        Table table = connection.getTable(tableName);

        Result rs = table.get(get);

//              System.out.println("Result: " + rs);

        byte[] valueBytes = rs.getValue(Bytes.toBytes(ColFamily), Bytes.toBytes(col));

        String valueStr = new String(valueBytes,"utf-8");

        return valueStr;

    }
}

大家感兴趣的也可以自己去做一做呀!