Spring Boot集成HBase
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Spring Boot集成HBase,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3903字,纯文字阅读大概需要6分钟。
内容图文
Spring Boot版本v1.5.19.RELEASE
1、增加Jar
<dependency> <groupId>com.spring4all</groupId> <artifactId>spring-boot-starter-hbase</artifactId> <version>1.0.0.RELEASE</version> </dependency>
2、创建表
创建命名空间pb
create_namespace ‘pb‘
在pb命名空间下创建用户表
create ‘pb:user‘, {NAME => ‘b‘, VERSIONS => ‘3‘, TTL => ‘2147483647‘, ‘BLOOMFILTER‘ => ‘ROW‘}, {NAME => ‘o‘, VERSIONS => ‘3‘, TTL => ‘2147483647‘, ‘BLOOMFILTER‘ => ‘ROW‘}
user表下有b和o列族
3、配置参数。
主要是hbase的配置。程序的部署环境和hbase的部署环境是同一台linux服务器。
spring: application: name: hbaseDemo kafka: bootstrap-servers: localhost:9092 consumer: group-id: mygroup listener: concurrency: 4 data: hbase: quorum: localhost:2181 rootDir: hdfs://localhost:9000/hbase nodeParent: /hbase redis: host: 127.0.0.1 port: 6379 server: port: 8080 logging: file:hbaseDemo.log level: debug
4、实现访问HBase数据库的关键代码
1) 基本信息
用户信息User。包括用户基本信息BaseInfo 和其它信息OtherInfo
@Data @NoArgsConstructor @AllArgsConstructor public class User { /** 用户 id */ private Long id; /** 用户基本信息 */ private BaseInfo baseInfo; /** 用户额外信息 */ private OtherInfo otherInfo; @Data @NoArgsConstructor @AllArgsConstructor public static class BaseInfo { private String name; private Integer age; private String sex; } @Data @NoArgsConstructor @AllArgsConstructor public static class OtherInfo { private String phone; private String address; } }
用户表结构常量。代表Hbase的表结构,表名为pb:user,列族分别为列族基本信息b和列族其它信息o。
列族基本信息b包括列字段name,列字段age,列字段age
列族其它信息o包括列字段phone和列字段address
public class UserTable { /** User HBase 表名 */ public static final String TABLE_NAME = "pb:user"; /** 基本信息列族 */ public static final String FAMILY_B = "b"; /** 用户名 */ public static final String NAME = "name"; /** 用户年龄 */ public static final String AGE = "age"; /** 用户性别 */ public static final String SEX = "sex"; /** 额外信息列族 */ public static final String FAMILY_O = "o"; /** 电话号码 */ public static final String PHONE = "phone"; /** 住址 */ public static final String ADDRESS = "address"; }
2)Controller层代码
直接调用服务层的创建用户
@ResponseBody @PostMapping("/createuser") Response createUser(@RequestBody User user) throws Exception { return userService.createUser(user); }
3)服务层代码
Hbase客户端
/** HBase 客户端 */ private final HbaseTemplate hbaseTemplate; /** redis 客户端 */ private final StringRedisTemplate redisTemplate; @Autowired public UserServiceImpl(HbaseTemplate hbaseTemplate, StringRedisTemplate redisTemplate) { this.hbaseTemplate = hbaseTemplate; this.redisTemplate = redisTemplate; }
保存用户信息
@Override public Response createUser(User user) throws Exception { byte[] FAMILY_B = Constants.UserTable.FAMILY_B.getBytes(); byte[] NAME = Constants.UserTable.NAME.getBytes(); byte[] AGE = Constants.UserTable.AGE.getBytes(); byte[] SEX = Constants.UserTable.SEX.getBytes(); byte[] FAMILY_O = Constants.UserTable.FAMILY_O.getBytes(); byte[] PHONE = Constants.UserTable.PHONE.getBytes(); byte[] ADDRESS = Constants.UserTable.ADDRESS.getBytes(); //Long curCount = redisTemplate.opsForValue().increment(Constants.USE_COUNT_REDIS_KEY, 1); Long userId = genUserId(++curCount); List<Mutation> datas = new ArrayList<Mutation>(); Put put = new Put(Bytes.toBytes(userId)); put.addColumn(FAMILY_B, NAME, Bytes.toBytes(user.getBaseInfo().getName())); put.addColumn(FAMILY_B, AGE, Bytes.toBytes(user.getBaseInfo().getAge())); put.addColumn(FAMILY_B, SEX, Bytes.toBytes(user.getBaseInfo().getSex())); put.addColumn(FAMILY_O, PHONE, Bytes.toBytes(user.getOtherInfo().getPhone())); put.addColumn(FAMILY_O, ADDRESS, Bytes.toBytes(user.getOtherInfo().getAddress())); datas.add(put); hbaseTemplate.saveOrUpdates(Constants.UserTable.TABLE_NAME, datas); user.setId(userId); return new Response(user); }
4) 使用接口调用
JSON格式
{ "baseInfo": { "name": "nick", "age": 100, "sex": "m" }, "otherInfo": { "phone": "18966668888", "address": "shanghai" } }
5) 查看HBase 表中创建的用户
scan pb:user
原文:https://www.cnblogs.com/linlf03/p/12994876.html
内容总结
以上是互联网集市为您收集整理的Spring Boot集成HBase全部内容,希望文章能够帮你解决Spring Boot集成HBase所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。