一.概念

  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. MySQL入门命令

    SQL(Structured Query Language) SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 ...

  2. Intellij Idea调试java文件时 怎么跳过class文件?

    Intellij Idea调试时 java文件时,遇到class文件时它也会反编译该文件,并跳入该class文件内一条条语句执行.这让我烦透了,怎么跳过class文件,继续调试啊? SETTINGS- ...

  3. java集成swagger

    概览: java集成Swagger Swagger-UI的使用 Springboot跨域请求的访问解决 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 W ...

  4. yum和rpm

    rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package ...

  5. (三)ajax请求不同源之cors跨域

    一.基本原理 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)它允许浏览器向跨源服务器,发出 XMLHttpReque ...

  6. configure: error: Cannot find php-config. Please use --with-php-config=PATH

    本文章给大家介绍configure: error: Cannot find php-config. Please use --with-php-config=PATH错误解决办法. configure ...

  7. MyBatis(三)MyBatis的增删改查

    (1)接口中编写方法 public Emp getEmp(Integer id); public void addEmp(Emp emp); public void deleteEmp(Integer ...

  8. java+接口自动化+eclipse之-----环境搭建

    根据金字塔的比重总结,UI测试占用10%,接口测试占有20%,单元测试占用70%.考虑到之前学过一段时间的单元测试.UI测试,而接口测试未曾接触过,所以最近打算看看接口测试是怎么实现的. 首先,我们先 ...

  9. Java Base64 加解密

    public class base64EncryAndDecry { public static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWX ...

  10. StringBuild使用与原理

    StringBuild的使用: 1.创建: StringBuilder sb=new StringBuilder(); StringBuilder sb=new StringBuilder(200); ...