一.概念

  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. 实现JWT刷新机制以及让过期时间更精确

      借助accessToken和refreshToken实现   accessToken控制刷新间隔,refreshToken控制最长过期时间   Min过期时间 = refreshToken过期时间 ...

  2. Java并发编程的4个同步辅助类

    Java并发编程的4个同步辅助类(CountDownLatch.CyclicBarrier.Semphore.Phaser) @https://www.cnblogs.com/lizhangyong/ ...

  3. RDay2-Problem 1 A

    题目描述 初始给你一个排列p[i],你可以执行以下操作任意多次. 选择一个i,交换p[i]和p[i+1]的值(其实就是交换排列当中两个相邻的元素). 我们现在希望对于任意的i满足p[i]不等于i,求最 ...

  4. oracle查看执行最慢与查询次数最多的sql语句

    前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致.如果执行频 ...

  5. npm安装less和less-loadernpm或者stylus和stylus-loader

    vue-cli 构建的项目默认是不支持 less 的,需要自己添加. 首选,安装 less 和 less-loader ,在项目目录下运行如下命令 npm install less less-load ...

  6. SQL入门(4): 嵌入式SQL语言

    本节讲述内容: 1.嵌入式SQL 语言概述 2.变量声明与数据库连接 3.数据集与游标 4.可滚动游标与数据库的增删改 5.状态捕捉以及错误处理机制 (一)嵌入式SQL语言 之前我们所学的都是交互式S ...

  7. python-argparse使用

    官方文档:https://docs.python.org/zh-cn/3.7/library/argparse.html?highlight=argparse#module-argparse argp ...

  8. 在Pycharm中自动添加时间日期作者等信息

    1.按照下面路径以此打开File→→Settings→→Editor→→File and code Templates 右侧找到Python Script,如下图 2.设置相关代码如下 ##!/usr ...

  9. highcharts的dataLabels如何去处阴影

    问题: 在使用highcharts生成的图标中dataLabels是有阴影的,通常是影响美观,那么如何去除阴影呢? 原因:是因为highcharts将dataLabels生成的标签是tspan,里面有 ...

  10. rsync 安装

    #!/bin/bash #root running ] then echo "must is root running" exit fi if [ -e /etc/rsyncd.c ...