一.概念

  1.对HBase JavaAPI的概述:

    01.hbase使用java语言编写,自然支持java编程

    02.支持CRUD操作

    03.JavaAPI包含了所有的hbase的shell,甚至比这个还要多

    04.JavaAPI是访问hbase的最快的方式

  2.api

    01.Configuration:Configuration对象包含了连接到hbase的服务的信息;zookeeper的位置,连接时间等

    02.HbaseConfiguration.create():从classPath下加载hbase-default.xml和hbase-sitl.xml文件,所以需要将hbase-site.xml放入到classPath下。hbase-sitl.xml将覆盖hbase-default.xml的同名属性

    03.HTable句柄:为Configuration提供对象和访问table的名称

    

HTable table = new HTable(con, tableName);

  一个table对应一个句柄:

    001.提供了CRUD操作,且支持批处理

    002.设计简单,使用方便

    003.提供行级事务

    004.不支持1多行事务或者表级别的事务

    005.并发读,顺序写

    006.严格的行一致性

    007.创建句柄代价很大,创建一次后尽可能复用

    008.如果需要创建多个句柄,使用HtablePoll

    009.HTable并非线程安全的,一个线程创建一个即可,但性能较高

二.代码环节

  1.需要下面的pom节点

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.5</version>
</dependency> <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.8.5</version>
</dependency> <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.8.5</version>
</dependency> <dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.1</version>
</dependency> <dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>1.3.1</version>
</dependency>

  2.将虚拟机中的hdfs-sitl.xml和hbase-sitl.xml文件复制到项目中的resources文件下

  3.修改window下的hosts文件,路径是:C:\Windows\System32\drivers\etc\hosts

  4.代码

public class HBaseJavaAPI {
public static void main(String[]args) throws Exception{
//createTable();
//addData();
//getAllData();
//deleteByRowKey();
//getByRowKey();
//deleteQualifier();
//deleteTable();
} /**
* 1.创建表
*/
public static void createTable() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create(); /**
* 2.创建HBaseAdmin对象,此对象包含了创建表,创建列族,检索表是否存在,修改表和列族结构,删除表等功能
* HBaseAdmin对象的生命周期不宜太长
*/
HBaseAdmin hBaseAdmin=new HBaseAdmin(con);
//3.判断表是否存在
if(hBaseAdmin.tableExists("hbase_demo_api")) {
System.out.println("表已存在,不许重复创建");
}else {
//4.创建表的描述对象
HTableDescriptor tableDescriptor=new HTableDescriptor("hbase_demo_api");
tableDescriptor.addFamily(new HColumnDescriptor("grade"));
tableDescriptor.addFamily(new HColumnDescriptor("course"));
hBaseAdmin.createTable(tableDescriptor);
System.out.println("表创建成功!");
}
hBaseAdmin.close();
} /**
* 2.新增数据
*/
public static void addData() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create();
//2.创建HTable句柄
HTable htable=new HTable(con, "hbase_demo_api");
//3.创建put对象
Put put=new Put("class1".getBytes()); //class1就是rowkey
put.addColumn("course".getBytes(), "sql".getBytes(), "90".getBytes());
put.addColumn("course".getBytes(), "java".getBytes(), "89".getBytes());
put.addColumn("grade".getBytes(), "".getBytes(), "c1".getBytes());
//4.向表中插入数据
htable.put(put);
System.out.println("插入成功!");
//5.关闭HTable对象
htable.close();
}
/**
* 3.查询全部数据
*/
public static void getAllData() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create();
//2.创建HTable句柄
HTable htable=new HTable(con, "hbase_demo_api");
//3.使用扫描器去扫描表
ResultScanner scanner = htable.getScanner(new Scan());
for (Result result: scanner) {
for (Cell cell: result.rawCells()) {
System.out.println("RowKey-------"+Bytes.toString(result.getRow()));
System.out.println("column(列族)-------"+Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("col(列)-------"+Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("value(值)-------"+Bytes.toString(CellUtil.cloneValue(cell)));
}
}
//4.关闭HTable对象
htable.close();
}
/**
* 4.删除表中指定RowKey的数据
*/
public static void deleteByRowKey() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create();
//2.创建HTable句柄
HTable htable=new HTable(con, "hbase_demo_api");
//3.创建delete对象
Delete delete =new Delete(Bytes.toBytes("class1"));
htable.delete(delete);
System.out.println("删除成功!");
//4.关闭HTable对象
htable.close();
} /**
* 5.获取指定RowKey的数据
*/
public static void getByRowKey() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create();
//2.创建HTable句柄
HTable htable=new HTable(con, "hbase_demo_api");
//3.创建get对象
Get get=new Get(Bytes.toBytes("class1"));
Result result = htable.get(get);
for (Cell cell : result.rawCells()) {
System.out.println("RowKey-------"+Bytes.toString(result.getRow()));
System.out.println("column(列族)-------"+Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("value(值)-------"+Bytes.toString(CellUtil.cloneValue(cell))); }
htable.close(); }
/**
* 6.获取指定RowKey的数据
*/
public static void deleteQualifier() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create();
//2.创建HTable句柄
HTable htable=new HTable(con, "hbase_demo_api");
//3.创建delete对象
Delete delete=new Delete(Bytes.toBytes("class1"));
delete.addColumn(Bytes.toBytes("course"), Bytes.toBytes("java")); htable.delete(delete);
System.out.println("删除成功!");
htable.close();
} /**
* 7.删除表
*/
public static void deleteTable() throws Exception {
//1.创建一个Configuration对象
Configuration con = HBaseConfiguration.create();
//2.创建HAdmin对象
HBaseAdmin admin=new HBaseAdmin(con);
//3.先将表禁用
admin.disableTable("hbase_demo_api");
//4.删除指定表
admin.deleteTable("hbase_demo_api");
System.out.println("删除成功!");
//5.关闭资源
admin.close();
}

  

HBase JavaAPI的更多相关文章

  1. 三、hbase JavaAPI

    hbase是Java编写的,当然也提供了Java的API来操作hbase. 如果你是使用虚拟机来安装配置hbase那么你需要配置一下hostname,不然JavaAPI访问虚拟机的时候会无法连接,请参 ...

  2. HBase JavaAPI操作示例

    package testHBase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBase ...

  3. Hbase javaAPI(工具类)表的增删改查

    建立连接: package Init; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; i ...

  4. Hbase javaAPI报错:Callexception,tries=10,retries=35,started=38465msago

    [client.RpcRetryingCaller(142)]Callexception,tries=10,retries=35,started=38465msago,cancelled=false, ...

  5. 分享知识-快乐自己:HBase编程

    HBase编程: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘HBa ...

  6. 学大数据是先学java还是先学python?

    大数据的发展趋势日渐明显,但是进入这个领域的门槛不小,除了要有心理准备,其次就是要付诸实际行动中去学习. 学习方法有很多,在没有基础的前提下,自学是因人而异是有难度.其次是大数据目前的工作方向主要是三 ...

  7. HBase的JavaAPI操作

    如果是DDL的操作就找HbaseAdmin. 如果是表上的增删改查的操作就找HTable. 附录代码: mport java.util.Arrays; import org.apache.hadoop ...

  8. HBase的Shell命令和JavaAPI

    HBase的shell操作和JavaAPI的使用: Shell 表操作 创建表 create 'student','info' #表名 列族 插入表 put 'student','1001','inf ...

  9. 大数据入门第十四天——Hbase详解(二)基本概念与命令、javaAPI

    一.hbase数据模型 完整的官方文档的翻译,参考:https://www.cnblogs.com/simple-focus/p/6198329.html 1.rowkey 与nosql数据库们一样, ...

随机推荐

  1. Vofuria ARCamera相机问题

    想要发射 射线 Camera.allCameras[0] 该语句来选择相机:Camera.main 此语句只能找到Tag为MainCamera的相机:

  2. springMVC下载中文文件名乱码【转】

    //遇到的现象是,下载含有中文文件名的文件时,能获取到文件,但是使用IE正常,使用firefox,chrome文件名却乱码.//既然如此,就区分一下浏览器再返回好了,处理方式如下 //RESTfull ...

  3. jquery 第二章

    1.本章目标    css样式    选择器2.css样式    宽.高.边框.背景颜色.字体....... <html> <head> <style> div{ ...

  4. 详解 CAP 定理 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)

    CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. 分布式 ...

  5. 饮冰三年-人工智能-Python-23 Python PyCharm 使用中常见的问题

    一:软件工具使用中遇到的问题 1:AttributeError: module 'pip' has no attribute 'main'问题 处理方法: a:找到JetBrains\PyCharm ...

  6. ios 运行时特征,动态改变控件字体大小

    需求:ex: 在不同尺寸的iPhone上面显示的字体大小不一样 https://github.com/rentzsch/jrswizzle #import <UIKit/UIKit.h> ...

  7. 咸鱼入门到放弃8--jsp<三>jsp内置对象

    NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.HttpServletRequ ...

  8. Codechef August Challenge 2018 : Lonely Cycles

    传送门 几波树形dp就行了. #include<cstdio> #include<cstring> #include<algorithm> #define MN 5 ...

  9. jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题

    jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...

  10. 5、faker.js数据模拟

    转载于:https://segmentfault.com/a/1190000008574028 今天发现了一个神器--json-server!在他的帮助下可以在很短的时间内搭建一个Rest API, ...