spring中操作hbase
文章目录
一、简介
这里介绍在spring中对hbase的操作。使用的是spring-data-hadoop-hbase包及相关包,包含原生的HbaseTemplate调用以及自定义的对象存取服务类HbaseService。
二、知识点
对hbase的操作是基于HbaseTemplate类,内包含对hbase数据的增删改查操作,以及自定义对语句的操作。这里列下其实现的操作接口HbaseOperations,如下:
package org.springframework.data.hadoop.hbase;
import org.apache.hadoop.hbase.client.Scan;
import java.util.List;
public interface HbaseOperations {
//直接执行hbase语句操作
<T> T execute(String tableName, TableCallback<T> action);
//以下是查找方法
<T> T find(String tableName, String family, final ResultsExtractor<T> action);
<T> T find(String tableName, String family, String qualifier, final ResultsExtractor<T> action);
<T> T find(String tableName, final Scan scan, final ResultsExtractor<T> action);
<T> List<T> find(String tableName, String family, final RowMapper<T> action);
<T> List<T> find(String tableName, String family, String qualifier, final RowMapper<T> action);
<T> List<T> find(String tableName, final Scan scan, final RowMapper<T> action);
<T> T get(String tableName, String rowName, final RowMapper<T> mapper);
<T> T get(String tableName, String rowName, String familyName, final RowMapper<T> mapper);
<T> T get(String tableName, final String rowName, final String familyName, final String qualifier, final RowMapper<T> mapper);
//保存方法
void put(String tableName, final String rowName, final String familyName, final String qualifier, final byte[] data);
//删除方法
void delete(String tableName, final String rowName, final String familyName);
void delete(String tableName, final String rowName, final String familyName, final String qualifier);
}
重点注意下查找方法的Scan扫描类及关联的过滤器类,以及需自定义的结果映射RowMapper类。具体使用可直接查看源码,后续会有示例。
三、使用
这里进行代码示例,使用的是spring boot。示例前先安装好hadoop、hbase,并创建好操作对象:
#创建表stu,并创建列簇base和ext,用于HbaseTemplate使用示例
create 'stu','base','ext'
#创建表Teacher,并创建列簇base和ext,用于自定义HbaseService使用示例
create 'Teacher','base','ext'
3.1 添加maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dragon.study</groupId>
<artifactId>spring_boot_hbase</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring_boot_hbase</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop-hbase</artifactId>
<version>2.5.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>2.5.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.1.2</version>