使用Hbase Shell和Java API分别进行Hbase的增删改查操作
a. Hbase Shell
//初始操作
//创建表
//往该表内插入数据
//查看该表内数据
//查找某一行元素
//修改001中zoujunyuan:hp 的值
//删除zhujuan:mp这一列
JAVA API方法
package com.briup.bigdata.project.grms;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;public class HBaseJavaAPI {// 声明静态配置 private static Configuration conf = null;static {conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "192.168.6.91");conf.set("hbase.zookeeper.property.clientPort", "2181");}//判断表是否存在 private static boolean isExist(String tableName) throws IOException {HBaseAdmin hAdmin = new HBaseAdmin(conf);return hAdmin.tableExists(tableName);}// 创建数据库表 public static void createTable(String tableName, String[] columnFamilys)throws Exception {// 新建一个数据库管理员 HBaseAdmin hAdmin = new HBaseAdmin(conf);if (hAdmin.tableExists(tableName)) {System.out.println("表 "+tableName+" 已存在!");System.exit(0);} else {// 新建一个students表的描述 HTableDescriptor tableDesc = new HTableDescriptor(tableName);// 在描述里添加列族 for (String columnFamily : columnFamilys) {tableDesc.addFamily(new HColumnDescriptor(columnFamily));}// 根据配置好的描述建表 hAdmin.createTable(tableDesc);System.out.println("创建表 "+tableName+" 成功!");}}// 删除数据库表 public static void deleteTable(String tableName) throws Exception {// 新建一个数据库管理员 HBaseAdmin hAdmin = new HBaseAdmin(conf);if (hAdmin.tableExists(tableName)) {// 关闭一个表 hAdmin.disableTable(tableName);hAdmin.deleteTable(tableName);System.out.println("删除表 "+tableName+" 成功!");} else {System.out.println("删除的表 "+tableName+" 不存在!");System.exit(0);}}// 添加一条数据 public static void addRow(String tableName, String row,String columnFamily, String column, String value) throws Exception {HTable table = new HTable(conf, tableName);Put put = new Put(Bytes.toBytes(row));// 指定行 // 参数分别:列族、列、值 put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),Bytes.toBytes(value));table.put(put);}// 删除一条(行)数据 public static void delRow(String tableName, String row) throws Exception {HTable table = new HTable(conf, tableName);Delete del = new Delete(Bytes.toBytes(row));table.delete(del);}// 删除多条数据 public static void delMultiRows(String tableName, String[] rows)throws Exception {HTable table = new HTable(conf, tableName);List<Delete> delList = new ArrayList<Delete>();for (String row : rows) {Delete del = new Delete(Bytes.toBytes(row));delList.add(del);}table.delete(delList);}// 获取一条数据 public static void getRow(String tableName, String row) throws Exception {HTable table = new HTable(conf, tableName);Get get = new Get(Bytes.toBytes(row));Result result = table.get(get);// 输出结果,raw方法返回所有keyvalue数组 for (KeyValue rowKV : result.raw()) {System.out.print("行名:" + new String(rowKV.getRow()) + " ");System.out.print("时间戳:" + rowKV.getTimestamp() + " ");System.out.print("列族名:" + new String(rowKV.getFamily()) + " ");System.out.print("列名:" + new String(rowKV.getQualifier()) + " ");System.out.println("值:" + new String(rowKV.getValue()));}}// 获取所有数据 public static void getAllRows(String tableName) throws Exception {HTable table = new HTable(conf, tableName);Scan scan = new Scan();ResultScanner results = table.getScanner(scan);// 输出结果 for (Result result : results) {for (KeyValue rowKV : result.raw()) {System.out.print("行名:" + new String(rowKV.getRow()) + " ");System.out.print("时间戳:" + rowKV.getTimestamp() + " ");System.out.print("列族名:" + new String(rowKV.getFamily()) + " ");System.out.print("列名:" + new String(rowKV.getQualifier()) + " ");System.out.println("值:" + new String(rowKV.getValue()));}}}// 主函数 public static void main(String[] args) {try {String tableName = "student";// 第一步:创建数据库表:“student” String[] columnFamilys = { "info", "course" };HBaseJavaAPI.createTable(tableName, columnFamilys);// 第二步:向数据表的添加数据 // 添加第一行数据 if (isExist(tableName)) {HBaseJavaAPI.addRow(tableName, "zjy", "info", "age", "20");HBaseJavaAPI.addRow(tableName, "zjy", "info", "sex", "boy");HBaseJavaAPI.addRow(tableName, "zjy", "course", "china", "97");HBaseJavaAPI.addRow(tableName, "zjy", "course", "math", "128");HBaseJavaAPI.addRow(tableName, "zjy", "course", "english", "85");// 添加第二行数据 HBaseJavaAPI.addRow(tableName, "NIUBI", "info", "age", "19");HBaseJavaAPI.addRow(tableName, "NIUBI", "info", "sex", "boy");HBaseJavaAPI.addRow(tableName, "NIUBI", "course", "china","90");HBaseJavaAPI.addRow(tableName, "NIUBI", "course", "math","120");HBaseJavaAPI.addRow(tableName, "NIUBI", "course", "english","90");// 添加第三行数据 HBaseJavaAPI.addRow(tableName, "zhujuan", "info", "age", "18");HBaseJavaAPI.addRow(tableName, "zhujuan", "info", "sex","girl");HBaseJavaAPI.addRow(tableName, "zhujuan", "course", "china","100");HBaseJavaAPI.addRow(tableName, "zhujuan", "course", "math","100");HBaseJavaAPI.addRow(tableName, "zhujuan", "course", "english","99");// 第三步:获取一条数据 System.out.println("**************获取一条(zjy)数据*************");HBaseJavaAPI.getRow(tableName, "zjy");// 第四步:获取所有数据 System.out.println("**************获取所有数据***************");HBaseJavaAPI.getAllRows(tableName);// 第五步:删除一条数据 System.out.println("************删除一条(zjy)数据************");HBaseJavaAPI.delRow(tableName, "zjy");HBaseJavaAPI.getAllRows(tableName);// 第六步:删除多条数据 System.out.println("**************删除多条数据***************");String rows[] = new String[] { "zhujuan","NIUBI" };HBaseJavaAPI.delMultiRows(tableName, rows);HBaseJavaAPI.getAllRows(tableName);// 第七步:删除数据库 System.out.println("***************删除数据库表**************");HBaseJavaAPI.deleteTable(tableName);System.out.println("表"+tableName+"存在吗?"+isExist(tableName));} else {System.out.println(tableName + "此数据库表不存在!");}} catch (Exception e) {e.printStackTrace();}}}
使用Hbase Shell和Java API分别进行Hbase的增删改查操作相关推荐
- 使用Java JdbcTemplate对mySQL进行CRUD增删改查操作
create方法:用字符串拼接构造一个SQL命令:"insert into Student (name, age) values (?, ?)" 然后传入jdbcTemplateO ...
- java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...
- 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!
什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...
- Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码
本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; ...
- java servlet dao_Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)
[实例简介] 该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详 ...
- Java连接sqlserver数据库,并进行增删改查操作
用编程语言连接数据库是程序员必备的技能,今天我们就来学习一下如何通过Java来连接sqlserver数据库,并实现增删改查操作. 需要用到的工具: Myeclipse,sqlserver数据库,Mic ...
- (Java/JDBC)对MySQL数据库实现基础的增删改查操作(含源码)
文章目录 前言 注(常用PreparedStatement方法) 源码展示 前言 实现数据库连接 → Java连接MySQL数据库(含源码) (实现简单的增删查改更改正确的SQL语句即可) 增:ins ...
- Java程序-单链表增删改查(实现对水浒人物的增删改查操作)
单链表增删改查(实现对水浒人物的增删改查操作) 前言 一.链表(Linked List)介绍 二.应用实例 1.问题描述 2.代码实现 总结 前言 参考:B站,尚硅谷数据结构与算法 课程 一.链表(L ...
最新文章
- 你负责人工智能哪部分?人工那部分:知识图谱的构建主要靠人工还是机器?...
- linux下C语言中的flock函数用法
- 代码不规范?985,211也不要!
- code review手记3
- 从婵媛的围脖上看到做产品的三个矛盾,思考ing......
- 插件占坑,四大组件动态注册前奏(三) 系统BroadCast的注册发送流程
- 策略模式 (Strategy)
- matlab学习心得与体会
- ❤The Matrix黑客帝国屏保!!!❤HTML实现及其傻瓜安装你值得拥有
- 【从零开始学习SLAM】ros navigation AMCL move_base配置文件 A-Star Dijkstra 算法原理
- MongoDB和Compass安装教程
- 快速乘 O(lgn) and O(1)
- 软件项目量化管理目标举例
- 【两周快速入门pr】三、定格动画制作-基础操作成就你的脑洞
- 公网部署freeswitch1.8.6后,终端注册成功后,在fs_cli控制台执行originate user/1000 echo,呼通1000的SIP终端后,终端讲话没有收到fs的回声解决方法
- PHP编写rss源(续)
- python编程怎么念_python怎么读 python的读法
- 调制 Modulation
- 追思心中璀璨的明星:杰出内核开发者李少华
- python可以数独游戏吗_简单实现python数独游戏