SpringBoot使用Hbase

文章介绍了如何在SpringBoot项目中集成Hbase,包括引入依赖、配置Zookeeper地址、创建Hbase配置类、配置连接池以及定义操作Hbase的服务类。特别地,文中提到的连接池管理避免了手动管理连接的问题,提高了效率。

SpringBoot使用Hbase

一,引入依赖

		<dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>2.3.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

二,配置文件添加自己的属性

hbase:
  zookeeper:
    quorum: 10.xxx.xx.153,10.xxx.xx.154,10.xxx.xx.155
    property:
      clientPort: 2181
  master:
    port: 9001

三,配置类注入HBASE配置

package com.hbase.config;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName: HBaseConfig
 * @author: Leemon
 * @Description: TODO
 * @date: 2023/4/12 18:06
 * @version: 1.0
 */
@Configuration
@RefreshScope
public class HBaseConfig {
   
   

    @Value("${hbase.zookeeper.quorum}")
    private String zookeeperQuorum;

    @Value("${hbase.zookeeper.property.clientPort}")
    private String clientPort;

    @Value("${hbase.master.port}")
    private String masterPort;

    @Bean
    public org.apache.hadoop.conf.Configuration hbaseConfiguration() {
   
   
        org.apache.hadoop.conf.Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", zookeeperQuorum);
        conf.set("hbase.zookeeper.property.clientPort", clientPort);
        // 如果hbase是集群,这个必须加上
        // 这个ip和端口是在hadoop/mapred-site.xml配置文件配置的
        conf.set("hbase.master", zookeeperQuorum + ":" + masterPort);

        conf.set("hbase.client.keyvalue.maxsize", "20971520");
        conf = HBaseConfiguration.create(conf);
        return conf;
    }

}

四,配置Hbase连接池

这里没有使用懒加载模式,减少启动后第一次访问时访问时间过长

package com.hbase.config;

import lombok.extern.slf4j.Slf4j;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Vector;

/**
 * @ClassName: HbaseConnectionPool
 * @author: Leemon
 * @Description: TODO
 * @date: 2023/4/13 9:45
 * @version: 1.0
 */
@Component
@Slf4j
public class HbaseConnectionPool {
   
   

    /**
     * 连接池最大的大小
     */
    private int nMaxConnections = 20;

    /**
     * 连接池自动增加的大小
     */
    private int nIncrConnectionAmount = 3;

    /**
     * 连接池的初始大小
     */
    private int nInitConnectionAmount = 3;

    /**
     * 存放连接池中数据库连接的向量,初始时为null
     */
    private Vector vcConnections = null;

    @Resource
    private Configuration hbaseConfiguration;

    @PostConstruct
    public void init() {
   
   
        try {
   
   
            vcConnections = new Vector();
            createConnections(nInitConnectionAmount);
        } catch (Exception e) {
   
   
            e.printStackTrace();
        }
    }

    public synchronized Connection getConnection() {
   
   
        // 确保连接池己被创建
        if (vcConnections == null) {
   
   
            // 连接池还没创建,则返回null
            return null;
        }
        // 获得一个可用的数据库连接
        Connection conn = getFreeConnection();
        // 如果目前没有可以使用的连接,即所有的连接都在使用中
        while (conn == null) {
   
   
            // 等一会再试
            try {
   
   
                wait(250);
            } catch (InterruptedException e) {
   
   
                e.printStackTrace();
            }
            // 重新再试,直到获得可用的连接,
Spring Boot结合Apache HBase可以方便地进行NoSQL数据库的操作,包括增删改查。以下是基本步骤: 1. **添加依赖**:首先,在你的Maven或Gradle构建文件中添加Spring Data HBase的依赖。例如,如果使用Maven,可以在pom.xml中添加: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-hbase</artifactId> </dependency> ``` 2. **配置HBase**:在application.properties或application.yml中配置HBase的相关信息,如连接地址、集群名等。 ```properties hbase.zookeeper.quorum=localhost hbase.zookeeper.property.clientPort=2181 spring.hbase.keyspace=mykeyspace ``` 3. **创建实体类**:定义HBase的表结构,通常通过`@Data`、`@Document`注解标识为HBase实体。 ```java import org.springframework.data.annotation.Document; import org.springframework.data.hadoop.core.Field; @Document(collection = "mycollection") public class MyEntity { @Field(id = true) private String id; // 其他字段... } ``` 4. **CRUD操作**: - **插入**:通过HBaseTemplate或Repository接口创建实例并保存。 ```java HBaseTemplate template = new HBaseTemplate(hbaseConfiguration); MyEntity entity = new MyEntity(); entity.setId("some-id"); template.save(entity); ``` - **查询**:使用Repository接口执行查询操作。 ```java List<MyEntity> entities = myEntityRepository.findBySomeProperty("value"); ``` - **更新**:找到对应的实体后修改属性再保存。 ```java MyEntity foundEntity = myEntityRepository.findById("some-id").orElse(null); foundEntity.setProperty("newValue"); template.save(foundEntity); ``` - **删除**:同样使用Repository接口的delete方法。 ```java myEntityRepository.deleteById("some-id"); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值