Java API操作HBase

1、创建Maven项目并添加依赖

要使用 Java API 操作 HBase,需要引入 hbase-client。这里选取的 HBase Client 的版本为 1.2.0。

<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase-client</artifactId>
  <version>1.2.0</version>
</dependency>

2、使用Java API开发代码

可先将连接方式写入静态方法,方便调用。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
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;

public class HBaseConfs {
    private HBaseConfs(){}
    private static Configuration getConf(){
        Configuration conf= HBaseConfiguration.create();
        conf.addResource(new Path("/opt/hbase/conf/hbase-site.xml"));
        conf.addResource(new Path("/opt/hadoop/etc/hadoop/core-site.xml"));
        return conf;
    }
    public static Connection getConn(){
        Connection conn=null;
        try {
            conn= ConnectionFactory.createConnection(getConf());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static Admin getAdmin(){
        Admin admin=null;
        try {
            admin=getConn().getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return admin;
    }
}

2.1创建表

import cn.kgc.kb09.test.util.HBaseConfs;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;

import java.io.IOException;

/**
 * @Author
 * @Date 2020/9/25
 * @Description
 */
public class CreateTable {
    public static void main(String[] args) {
        /*
        Configuration conf= HBaseConfiguration.create();
        conf.addResource(new Path("/opt/hbase/conf/hbase-site.xml"));
        conf.addResource(new Path("/opt/hadoop/etc/hadoop/core-site.xml"));
        Connection conn= ConnectionFactory.createConnection(conf);
        Admin admin=conn.getAdmin();
        HTableDescriptor htd=new HTableDescriptor(TableName.valueOf(args[0]));
        HColumnDescriptor add=new HColumnDescriptor(args[1]);
        HColumnDescriptor time=new HColumnDescriptor(args[2]);
        htd.addFamily(add);
        htd.addFamily(time);
        admin.createTable(htd);
        */
        Admin admin= HBaseConfs.getAdmin();
        HTableDescriptor htd=new HTableDescriptor(TableName.valueOf(args[0]));
        for (int i = 1; i < args.length; i++) {
            HColumnDescriptor family=new HColumnDescriptor(args[i]);
            htd.addFamily(family);
        }
        try {
            admin.createTable(htd);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                admin.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

2.2插入数据

import cn.kgc.kb09.test.util.HBaseConfs;
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.Put;
import org.apache.hadoop.hbase.client.Table;
import java.io.IOException;

public class InsertTable {
    public static void main(String[] args) throws Exception {
        Connection conn= HBaseConfs.getConn();
        Admin admin=HBaseConfs.getAdmin();
        TableName[] tableNames=admin.listTableNames();
        for (TableName tableName : tableNames) {
            System.out.println(tableName.getNameAsString());
        }
        Table table=conn.getTable(TableName.valueOf("abc"));
        String[][] values={
                {"1","娜娜","李","1st Red House","WDC"}
                ,{"2","明明","王","10th 唐宁街","London"}
                ,{"3","多多","黄","111th 东关街","Yangzhou"}
                ,{"4","紫紫","杨","12th xiaohang","Nanjing"}
        };
        for (int i = 0; i < values.length; i++) {
            Put put=new Put(values[i][0].getBytes());
            put.addColumn("name".getBytes(),"fname".getBytes(),values[i][1].getBytes());
            put.addColumn("name".getBytes(),"lname".getBytes(),values[i][2].getBytes());
            put.addColumn("time".getBytes(),"address".getBytes(),values[i][3].getBytes());
            put.addColumn("time".getBytes(),"city".getBytes(),values[i][4].getBytes());
            table.put(put);
        }
        admin.close();
        conn.close();
    }
}

3、打包、上传Jar包并测试

  • 打包并上传jar包
  • 测试建表
hadoop jar testhbase.jar 'cn.kgc.kb09.test.CreateTable' 'abc' 'name' 'time'
  • 测试插入数据
hadoop jar testhbase.jar 'cn.kgc.kb09.test.InsertTable'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java API操作HBase非常简单和方便。HBase提供了一个Java库,可以使用它来连接和与HBase进行交互。下面是使用Java API操作HBase的步骤: 1. 首先,需要导入HBaseJava库。可以在项目的构建文件(例如pom.xml)中添加HBase相关依赖项,或者手动将HBase库添加到项目的类路径中。 2. 创建HBase的配置对象,并设置必要的配置参数。配置对象可以指定HBase的连接地址、端口号等信息。 3. 使用HBase的配置对象创建一个HBase的连接对象。连接对象允许与HBase进行通信。 4. 通过连接对象创建一个HBase的管理员对象。管理员对象用于对HBase的表进行管理,如创建表、删除表等操作。 5. 创建HBase表的描述符对象,并指定表的名称、列族等信息。 6. 使用管理员对象创建HBase表。可以使用表的描述符对象来定义表的结构。 7. 使用HBase表的描述符对象创建一个表对象。表对象用于与HBase的表进行交互。 8. 使用表对象执行各种操作,如插入数据、更新数据、删除数据等。可以使用行键(row key)和列族名(column family)来定位和操作特定的数据。 9. 关闭与HBase的连接,释放资源。 通过以上步骤,可以使用Java API来连接和操作HBase。在实际应用中,还可以根据具体需求来添加其他操作,如查询数据、扫描表等。使用Java API操作HBase可以灵活地控制和管理HBase中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值