HBase Java API操作数据库
场景
CentOS7上搭建Hadoop集群(入门级):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119335883:
HBase在CentOS上分布集群安装:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119511593
在上面将开发环境搭建起来,要想操作操作数据库除了使用HBase Shell
HBase Shell常用的命令:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119516818
还可以使用JAVA API对HBase进行操作。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
HBase Java API 与HBase数据模型的对应关系
实现
1、首先在IDEA中新建Maven项目,pom文件中添加依赖
<dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-common</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-protocol</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>2.4.5</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>
2、然后新建包,包下新建类,首先新建建立连接和关闭连接的方法
public static Configuration cfg = HBaseConfiguration.create();public static Connection conn;/*** 建立连接* @throws IOException*/public static void getConn() throws IOException {cfg.set("hbase.zookeeper.quorum","192.168.148.128:2181,192.168.148.131:2181,192.168.148.132:2181");//创建数据库连接conn = ConnectionFactory.createConnection(cfg);}/*** 关闭连接* @throws IOException*/public static void closeConn() throws IOException {conn.close();}
然后这里的zookeeper的配置参考上面配置HBase的hbase-site.xml中的配置。
这里配置的是master、slave1、slave2的ip,另外要在本地电脑hosts文件中加上集群节点的映射。
3、获取所有表,新建方法
/*** 列出所有的表* @throws IOException*/public static void listAllTable() throws IOException {//Admin 用于管理HBase数据库的表信息Admin admin = conn.getAdmin();for(TableName name : admin.listTableNames()){System.out.println(name);}}
然后在main方法中调用
public static void main(String[] args) throws IOException {getConn();listAllTable();closeConn();}
注意:
org.apache.hadoop.hbase.client.Admin是为管理HBase而提供的接口,在Connection
实例调用getAdmin()和close()方法期间有效。使用Admin接口可以实现的主要
HBase Shell命令包括create, list, drop, enable, disable, alter,相应方法如下所示。
4、创建表方法
/*创建表*/public static void createTable(String tableName,String ...familyNames) throws IOException {//Admin 用于管理HBase数据库的表信息Admin admin = conn.getAdmin();//表名TableName tn = TableName.valueOf(tableName);//如果表已经存在if(admin.tableExists(tn)){//先使表无效admin.disableTable(tn);//删除表admin.deleteTable(tn);}//HTableDescriptor 包含了表的名字及其对应的列族HTableDescriptor hTableDescriptor = new HTableDescriptor(tn);for(String family:familyNames){hTableDescriptor.addFamily(new HColumnDescriptor(family));}admin.createTable(hTableDescriptor);admin.close();}
5、查看表结构方法
/*查看表结构*/public static void describe(String tableName) throws IOException {Admin admin = conn.getAdmin();TableName tn = TableName.valueOf(tableName);HTableDescriptor hTableDescriptor = admin.getTableDescriptor(tn);for(HColumnDescriptor hcd :hTableDescriptor.getColumnFamilies()){System.out.println(hcd.getNameAsString());}}
6、插入数据方法
/*插入数据*/public static void putdata() throws IOException {cfg.set("hbase.zookeeper.quorum","192.168.148.128:2181,192.168.148.131:2181,192.168.148.132:2181");//创建数据库连接conn = ConnectionFactory.createConnection(cfg);Table tb = conn.getTable(TableName.valueOf("scores"));Put p = new Put(Bytes.toBytes("zhangsan"));p.addColumn(Bytes.toBytes("grade"),Bytes.toBytes(""),Bytes.toBytes("3"));p.addColumn(Bytes.toBytes("grade"),Bytes.toBytes("math"),Bytes.toBytes("58"));p.addColumn(Bytes.toBytes("course"),Bytes.toBytes("art"),Bytes.toBytes("98"));tb.put(p);}
注意:
Table接口用于和HBase中的表进行通信,代表了该表的实例,使用Connection的
getTable(TableName tableName)方法可以获取该接口的实例,用于获取、添加、删除、扫描HBase表中的数据。
Table接口包含的主要方法如下
7、获取数据方法
/*获取数据*/public static void getdata() throws IOException {cfg.set("hbase.zookeeper.quorum","192.168.148.128:2181,192.168.148.131:2181,192.168.148.132:2181");//创建数据库连接conn = ConnectionFactory.createConnection(cfg);Table tb = conn.getTable(TableName.valueOf("scores"));Get get = new Get(Bytes.toBytes("zhangsan"));//get.addFamily(Bytes.toBytes("grade"));//get.addColumn(Bytes.toBytes("grade"),Bytes.toBytes("math"));Result result = tb.get(get);System.out.println(String.format("resule.value=%s,resule.toString():%s",Bytes.toString(result.value()),result));}
注意:
按行键获取
Get get = new Get(Bytes.toBytes("zhangsan"));
按行键、列族获取
Get get = new Get(Bytes.toBytes("zhangsan"));
get.addFamily(Bytes.toBytes("grade"));
按行键、列族、列修饰符获取
Get get = new Get(Bytes.toBytes("zhangsan"));
get.addColumn(Bytes.toBytes("grade"),Bytes.toBytes("math"));
示例代码下载
https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/21114101
HBase Java API操作数据库相关推荐
- Hbase java API操作(模板代码)
Hbase java API操作 1 创建maven工程 导入jar包 <repositories><repository><id>cloudera</id& ...
- 6 HBase java API访问HBase数据库
HBase java API访问HBase数据库 package com.hunan.hbase_options;import org.apache.hadoop.conf.Configuration ...
- 使用 Java API 操作 HBase
使用 Java API 操作 HBase 数据库,就类似HBase Shell,本质上一个是Java 代码,一个是Shell 命令.(hadoop 的文件系统莫不如此,可用Java API 的方式操作 ...
- Hbase 完全分布式模式的搭建、命令行操作、Java API操作
追风赶月莫停留,平芜尽处是春山. 文章目录 追风赶月莫停留,平芜尽处是春山. 环境 Hbase 完全分布式模式的搭建 一.下载安装包,解压到合适位置: 二.配置相关的文件: 三.将Hbase复制到其他 ...
- HBase–常用API操作篇
2019独角兽企业重金招聘Python工程师标准>>> [常用到的几个类] 1. org.apache.hadoop.hbase.HBaseConfiguration 每一个hbas ...
- HBase Java API 创建表时一直卡住
场景 HBase在CentOS上分布集群安装: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119511593 在上面搭建起来H ...
- 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作
大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...
- 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...
一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...
- kafka详解(JAVA API操作kafka、kafka原理、kafka监控)-step2
1.JAVA API操作kafka 修改Windows的Host文件: 目录:C:\Windows\System32\drivers\etc (win10) 内容: 192.168.40.150 k ...
- MongoDB Java API操作很全的整理以及共享分片模式下的常见操作整理
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...
最新文章
- AI安防落地靠什么?大规模生产是关键
- 数据中心运营商如何选择合适的蓄电池
- Social Media Modify case - still about attribute_ref
- 解决: Elements in iteration expect to have ‘v-bind:key‘ directives
- 实例化vue之前赋值html元素导致事件失效
- DataGridView的单元格内容即时更新方法
- java二级为什么没题库_为什么刷了那么多二级java试题,却依然提高不了分数?...
- HTTP请求tomcat版本升级无法识别问题
- skyline 系列 1 - 简介、下载
- 搜狗商业数据库自动化运维平台
- Java求100000以内素数_100000以内的质数表
- Progress实现进度条效果
- Unity导航小地图制作
- pandas支持读取哪些类型文件_Pandas教程: 读取Excel文件
- 女孩子做项目管理的发展_我可以和孩子们一起做些有趣的技术项目吗?
- springboot计算机专业毕业设计优秀级别最新题目
- 【论文】联邦学习区块链 论文集(三)
- 时间、延迟以及延缓操作
- linux 处理匹配文本的前后行
- Win10 无线投屏/无线屏幕拓展
热门文章
- 软件测试工程师的职业技能分析
- HTML页面中条形码或二维码扫描枪的使用
- XCOM串口调试软件的安装与使用(附串口及驱动资源包)
- 避坑指南——海外服务器租用的这些坑,你踩过吗?
- R 语言的表格合并(实际运用)
- MATLAB 调用cplex解二次规划,【Cplex for MATLAB】安装问题以及二次规划的源码解释问题...
- IDEA Maven下载依赖时报错: ERROR - #org.jetbrains.idea.maven - Cannot reconnect.
- 【江枫】lvm2与powerpath的Found duplicate PV问题
- Java开发-日期与时间戳转换封装工具类
- nginx正向代理——实现上网功能