场景

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操作数据库相关推荐

  1. Hbase java API操作(模板代码)

    Hbase java API操作 1 创建maven工程 导入jar包 <repositories><repository><id>cloudera</id& ...

  2. 6 HBase java API访问HBase数据库

    HBase java API访问HBase数据库 package com.hunan.hbase_options;import org.apache.hadoop.conf.Configuration ...

  3. 使用 Java API 操作 HBase

    使用 Java API 操作 HBase 数据库,就类似HBase Shell,本质上一个是Java 代码,一个是Shell 命令.(hadoop 的文件系统莫不如此,可用Java API 的方式操作 ...

  4. Hbase 完全分布式模式的搭建、命令行操作、Java API操作

    追风赶月莫停留,平芜尽处是春山. 文章目录 追风赶月莫停留,平芜尽处是春山. 环境 Hbase 完全分布式模式的搭建 一.下载安装包,解压到合适位置: 二.配置相关的文件: 三.将Hbase复制到其他 ...

  5. HBase–常用API操作篇

    2019独角兽企业重金招聘Python工程师标准>>> [常用到的几个类] 1. org.apache.hadoop.hbase.HBaseConfiguration 每一个hbas ...

  6. HBase Java API 创建表时一直卡住

    场景 HBase在CentOS上分布集群安装: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119511593 在上面搭建起来H ...

  7. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

  8. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...

    一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...

  9. kafka详解(JAVA API操作kafka、kafka原理、kafka监控)-step2

    1.JAVA API操作kafka  修改Windows的Host文件: 目录:C:\Windows\System32\drivers\etc (win10) 内容: 192.168.40.150 k ...

  10. MongoDB Java API操作很全的整理以及共享分片模式下的常见操作整理

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...

最新文章

  1. AI安防落地靠什么?大规模生产是关键
  2. 数据中心运营商如何选择合适的蓄电池
  3. Social Media Modify case - still about attribute_ref
  4. 解决: Elements in iteration expect to have ‘v-bind:key‘ directives
  5. 实例化vue之前赋值html元素导致事件失效
  6. DataGridView的单元格内容即时更新方法
  7. java二级为什么没题库_为什么刷了那么多二级java试题,却依然提高不了分数?...
  8. HTTP请求tomcat版本升级无法识别问题
  9. skyline 系列 1 - 简介、下载
  10. 搜狗商业数据库自动化运维平台
  11. Java求100000以内素数_100000以内的质数表
  12. Progress实现进度条效果
  13. Unity导航小地图制作
  14. pandas支持读取哪些类型文件_Pandas教程: 读取Excel文件
  15. 女孩子做项目管理的发展_我可以和孩子们一起做些有趣的技术项目吗?
  16. springboot计算机专业毕业设计优秀级别最新题目
  17. 【论文】联邦学习区块链 论文集(三)
  18. 时间、延迟以及延缓操作
  19. linux 处理匹配文本的前后行
  20. Win10 无线投屏/无线屏幕拓展

热门文章

  1. 软件测试工程师的职业技能分析
  2. HTML页面中条形码或二维码扫描枪的使用
  3. XCOM串口调试软件的安装与使用(附串口及驱动资源包)
  4. 避坑指南——海外服务器租用的这些坑,你踩过吗?
  5. R 语言的表格合并(实际运用)
  6. MATLAB 调用cplex解二次规划,【Cplex for MATLAB】安装问题以及二次规划的源码解释问题...
  7. IDEA Maven下载依赖时报错: ERROR - #org.jetbrains.idea.maven - Cannot reconnect.
  8. 【江枫】lvm2与powerpath的Found duplicate PV问题
  9. Java开发-日期与时间戳转换封装工具类
  10. nginx正向代理——实现上网功能