这里进入HBase的javaAPI章节进行学习,这里我会非常详细的讲述如何创建连接和基础的使用,以及一个小项目的学习。跟随着我往下看

HBase的javaAPI

一、API

几个主要的Hbase API类和数据模型之间的的对应的关系:

  1. HBaseConfiguration:最简单的一个饿类,可以在进行连接的时候,指定一些简单的配置,比如URL地址,在哪里找HBase或者HBase 的一些配置等等
  2. HBaseAdmin类,如果想对HBase 的表进行一些操作,比如DDL操作(数据定义语言,比如create,drop等),但是hbase没有sql语句,所以这里类比于DDL。修改表结构、创建表、删除表。
  3. HTable:和HBase表进行联系。
  4. HTableDescriptor:描述表的结构,表的结构就是列簇。

1.1HBaseAdmin

  • 类:org.apache.hadoop.hbase.client.HBaseAdmin
  • 作用:提供一个接口来管理HBase数据库的恶表信息。它提供的方法包括:创建表,删除 表,列出表项,使表有效或者无效,以及添加或删除表列簇成员等。

1.2HTablleDescriptor

*类:org.apache.hadoop.hbase.HTableDescriptor
*作用;包含了表的名及其对应表的列簇

1.3HColumnDescriptor

*类: org.apache.hadoop.hbase.HCoiumnDescriptoor
*作用:维护着关于列簇的信息,例如版本号,压缩设置等 。他通常在创建表或者 为表添加列簇的时候使用。列簇被创建之后不能直接修改,只能通过删除然后来重新创建的方式。
列簇被删除的时候,列簇里面的数据 也会同时被删除。

1.4HTable

*org.apache.hadoop.hbase.client.Htable
*作用:可以用来和HBase表直接通信。此方法对于更新

1.5 Result类

*类:org.apache.hadoop.hbase.client.Result
*作用:存储Get或者Scan操作后获取的单行值。使用此类提供的方法可以直接获取值或者各种Map结构(key-value对)。

二、Java代码

看代码详细讲解

public static void main(String[] args) throws Exception{//1.创建配置文件,设置HBase的连接地址Configuration cconf=HbaseConfiguration.create()conf.set("hbase.zookeeper.quorum", "192.168.3.67:2181,192.168.3.68:2181,192.168.3.69:2181")//2.创建连接Connection connection = ConnectionFactory.ceateConnection(conf);/***  3、执行操作:*  对表的结构进行操作 则getAdmin*  对表的数据进行操作 则getTable*/Admin admin = connection.getAdmin();Table stu = connection.getTable(TableName.valueOf("stu"));connection.close();}

这里只是简单的进行讲解,下面来看详细的讲解

这里的创建连接就不说了,就是把这里的局部变量变成全局变量即可Connection connection;Admin admin;@BeforeTestpublic void beforeTest() throws Exception{//1.创建Hbase配置,使用HBaseConfiguration.create();来进行创建Configuration conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "192.168.3.67:2181,192.168.3.68:2181,192.168.3.69:2181");//2.使用 ConnectionFactory.createConnection创建Hbase链接connection = ConnectionFactory.createConnection(conf);//3.要创建表,需要基于Hbase链接获取admin管理对象//要创建表、删除表需要和HMaster进行链接,所以需要有一个admin对象admin = connection.getAdmin();}//创建表
//首先我们需要判断表是否存在//在HBase中,需要创建表,需要构建TableDescriptor(表描述器)、// ColumnFamilyDescriptor(列蔟描述器),这两个对象不是直接new出来,// 是通过builder来创建的@Test
public void creatTable() throws Exception{//首先要get一个admin对象,但是我们在创建连接的时候,已经get过了,这里可以忽略//构建表,使用HtableDescriptor,没有我们需要先new一个HTableDescirptor testAPI = new HTableDescriptor(TableName.valueOf("TestAPI"));//表创建完成以后,这里需要创建表结构,//首先创建列簇HColumnDescriptor info =  new HColumnDescriptor("info");//如果想对列簇进行配置的话,可以使用add】方法info.setMaxVerdsion(3);///加入列簇, 给testAPI表添加一个列簇testAPI.addFamily(info);//使用areatTable方法,、把参数传进去this.admin.creatTable(testAPI);
}@Test
//查看表
public void listTable() throws Exception {TableName[] tableNames = admin.listTableNames();for (TableName tableName : tableNames) {System.out.println(tableName.getNameAsString());}
}上面查询的只是表的查询,这里来看看表结构的查询@Test//查看表结构,使用desc方法进行查看
public void descList() throws  Exception{//如何判断是getmian还是gettable呢,就看是否和数据有关系。// 如果和数据没有关系的话,就用getAdmin()
}

批量写入

    @Test/*** 创建stu表,增加一个info列簇,将students.txt的1000条数据全部插入*/public void PutAllStu() throws Exception{//可能会被多次使用,所以要提取出来TableName stu = TableName.valueOf("stu");//创建表Admin admin = connection.getAdmin();//首先要判断这张表if(admin.tableExists(stu)){//先放一个表结构进去,表结构需要表名,先穿进去表名//然后添加一个列簇,列簇又要new一个列簇的结构//这里利用的是匿名对象的方式调用admin.createTable(new HTableDescriptor(stu).addFamily(new HColumnDescriptor("info")));}//对表进行链接Table stuTable = connection.getTable(stu);ArrayList<Put> puts = new ArrayList<>();//读取文件,使用BufferedReader来读取BufferedReader bufferedReader = new BufferedReader(new FileReader("ddata/students.txt"));int clt = 0;String line;while ((line = bufferedReader.readLine())!=null){//把每一列切分String[] split = line.split(",");String id = split[0];String name = split[1];String age = split[2];String gender = split[3];String clazz = split[4];Put put = new Put(id.getBytes());put.addColumn("info".getBytes(),"name".getBytes(),name.getBytes());put.addColumn("info".getBytes(),"age".getBytes(),age.getBytes());put.addColumn("info".getBytes(),"gender".getBytes(),gender.getBytes());put.addColumn("info".getBytes(),"clazz".getBytes(),clazz.getBytes());puts.add(put);//这里put了1000次// 逐条插入,效率较低//    stuTable.put(put);}//调用put,把put的list传进去stuTable.put(puts);clt+=1;if(clt == 100){stuTable.put(puts);puts.clear();//清空clt = 0;}bufferedReader.close();}

HBase学习-----javaAPI详细教程相关推荐

  1. 【libuv高效编程】libuv学习超详细教程3——libuv事件循环

    文章目录 libuv系列文章 libuv事件循环 uv_loop_t demo uv_loop_init() uv_run() uv_loop_close() 参考 例程代码获取 libuv系列文章 ...

  2. 远程配置深度学习服务器详细教程,配置Conda+PyTorch环境

    进入实验室以后,大家就会用实验室的服务器跑一些深度学习模型.如何连接服务器,以及连接服务器后如何配置conda和PyTorch深度学习框架,在此进行详细的介绍. 首先,在连接服务器之前,需要向服务器的 ...

  3. angularjs学习总结 详细教程

    本文详细讲解了前言.AngularJS概述.AugularJS特性.功能介绍.功能演示.功能演示.AngularJS进阶.总结七部分,可能会与原文略有不同. 不理解请看原文(尤其是代码部分),本文仅供 ...

  4. angularjs学习总结 详细教程(转载)

    1 前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,紧跟时代潮流,学习掌握新知识自然是不敢怠慢. AngularJS是google在维护,其在国外已经十分火热,可是国内的 ...

  5. 【libuv高效编程】libuv学习超详细教程2——libuv框架初窥

    文章目录 libuv框架 同步I/O 异步I/O Handles 和 Requests 事件循环 参考 libuv框架 从官方的文档可以找到一个设计框架的图片:libuv/docs/src/stati ...

  6. 【libuv高效编程】libuv学习超详细教程1——libuv的编译与安装

    文章目录 libuv简介 下载libuv 安装必要的依赖 拉取libuv源码 编译使用 验证编译安装是否完成 简单实用 libuv简介 libuv 是一个高性能的,事件驱动的I/O,并且支持多平台的网 ...

  7. HBase2.4.8详细教程(一)HBase环境搭建

    HBase的数据存储在Hadoop上,而ZooKeeper负责HMaster选举与主备切换.系统容错.RootRegion管理.Region状态管理等,所以安装HBase首先需要安装Hadoop和Zo ...

  8. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON12 IPCORE核之FIFO详细教程

    ALTERA FPGA IPCORE核之FIFO详细教程 若要观看该博客配套的视频教程,可点击此链接 一. FIFO简介 FIFO: 是英文first in first out的缩写,即先进先出,指的 ...

  9. tensorflow学习笔记九:将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程

    2017/02/23 更新 贴一个TensorFlow 2017开发者大会的Mobile专题演讲 移动和嵌入式TensorFlow 这里面有重点讲到本文介绍的三个例子,以及其他的移动和嵌入式方面的TF ...

最新文章

  1. 波士顿动力的仓库机器人Strentch来了,挑战每小时搬运800个箱子
  2. qt-designer使用教程1--HelloWorld
  3. [Python web开发] Web框架开发基础 (一)
  4. [笔试面试题] 8-面向对象篇
  5. C语言实现随机发纸牌
  6. 今日初学C语言写的几个程序。
  7. 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
  8. Irrlicht例001--Hello World
  9. 改变ALERT组件的背景色和背景透明度.
  10. 框架基础---动态代理
  11. 基于移动通信数据的城市可视分析研究
  12. seL4微内核操作系统初期总结 2018.10
  13. picgo+sharex写markdown笔记
  14. 什么是逻辑结构以及物理结构
  15. 第二次上机作业 (数组综合)
  16. Tensorflow让神经网络自动创造音乐
  17. linux的双系统修复工具下载,Mbrfix官方下载_Mbrfix.exe双系统MBR修复工具下载 - 系统之家...
  18. 免费好用的流程图、UML工具
  19. Android面试题-Activity
  20. html 字符相同判断,javascript判断字符串是否相等

热门文章

  1. BlockingQueue(阻塞队列)
  2. 关于ARM9中的协处理器CP15及MCR/MRC指令
  3. 使用MSP430F5529的ADC测量,并用OLED显示传感器输出的模拟量
  4. 按摩肺经,补足肺气眠自安
  5. 郁闷的时候看下,心情也许会好一些(转自CSDN)
  6. Linux中的defunct进程(僵尸进程)
  7. 新年Java小游戏之「年兽大作战」祝您笑口常开
  8. python之re模块详解
  9. 模拟电路1(二极管半导体知识)
  10. 英语单词 One 个人 2. 出生和死亡