package com.utils;





import java.io.IOException;

import java.util.ArrayList;

import java.util.List;





import org.apache.hadoop.conf.Configuration;

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.HTableInterface;

import org.apache.hadoop.hbase.client.HTablePool;

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.filter.CompareFilter.CompareOp;

import org.apache.hadoop.hbase.filter.PrefixFilter;

import org.apache.hadoop.hbase.filter.RegexStringComparator;

import org.apache.hadoop.hbase.filter.RowFilter;





public class HBaseTest {

HBaseAdmin admin=null;

Configuration conf=null;

/**

* 构造函数载入配置

*/

public HBaseTest(){

conf = new Configuration();

conf.set("hbase.zookeeper.quorum","192.168.80.20,192.168.80.21,192.168.80.22");

conf.set("hbase.rootdir", "hdfs://cluster/hbase");

conf.set("hbase.master", "192.168.80.20:60010");

try {

admin = new HBaseAdmin(conf);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws Exception {

HBaseTest hbase = new HBaseTest();

//创建一张表

hbase.createTable("stu","cf");

// //查询全部表名

// hbase.getALLTable();

// //往表中加入一条记录

// hbase.addOneRecord("stu","key1","cf","name","zhangsan");

// hbase.addOneRecord("stu","key1","cf","age","24");

// //查询一条记录

// hbase.getKey("stu","key1");

// //获取表的全部数据

// hbase.getALLData("stu");

// //删除一条记录

// hbase.deleteOneRecord("stu","key1");

// //删除表

// hbase.deleteTable("stu");

//scan过滤器的使用

hbase.getScanData("stu","cf","age");

//rowFilter的使用

//84138413_20130313145955

hbase.getRowFilter("waln_log","^*_201303131400\\d*$");

}





public void getRowFilter(String tableName, String reg) throws Exception {

HTable hTable = new HTable(conf, tableName);

Scan scan = new Scan();

RowFilter rowFilter = new RowFilter(CompareOp.NOT_EQUAL, new RegexStringComparator(reg));

scan.setFilter(rowFilter);

ResultScanner scanner = hTable.getScanner(scan);

for (Result result : scanner) {

System.out.println(new String(result.getRow()));

}

}

public void getScanData(String tableName, String family, String qualifier) throws Exception {

HTable hTable = new HTable(conf, tableName);

Scan scan = new Scan();

scan.addColumn(family.getBytes(), qualifier.getBytes());

ResultScanner scanner = hTable.getScanner(scan);

for (Result result : scanner) {

if(result.raw().length==0){

System.out.println(tableName+" 表数据为空!

");

}else{

for (KeyValue kv: result.raw()){

System.out.println(new String(kv.getKey())+"\t"+new String(kv.getValue()));

}

}

}

}

private void deleteTable(String tableName) {

try {

if (admin.tableExists(tableName)) {

admin.disableTable(tableName);

admin.deleteTable(tableName);

System.out.println(tableName+"表删除成功。");

}

} catch (IOException e) {

e.printStackTrace();

System.out.println(tableName+"表删除失败!

");

}



}

/**

* 删除一条记录

* @param tableName

* @param rowKey

*/

public void deleteOneRecord(String tableName, String rowKey) {

HTablePool hTablePool = new HTablePool(conf, 1000);

HTableInterface table = hTablePool.getTable(tableName);

Delete delete = new Delete(rowKey.getBytes());

try {

table.delete(delete);

System.out.println(rowKey+"记录删除成功!");

} catch (IOException e) {

e.printStackTrace();

System.out.println(rowKey+"记录删除失败!");

}

}

/**

* 获取表的全部数据

* @param tableName

*/

public void getALLData(String tableName) {

try {

HTable hTable = new HTable(conf, tableName);

Scan scan = new Scan();

ResultScanner scanner = hTable.getScanner(scan);

for (Result result : scanner) {

if(result.raw().length==0){

System.out.println(tableName+" 表数据为空!");

}else{

for (KeyValue kv: result.raw()){

System.out.println(new String(kv.getKey())+"\t"+new String(kv.getValue()));

}

}

}

} catch (IOException e) {

e.printStackTrace();

}



}

/**

* 查询一条记录

* @param tableName

* @param rowKey

*/

public void getKey(String tableName, String rowKey) {

HTablePool hTablePool = new HTablePool(conf, 1000);

HTableInterface table = hTablePool.getTable(tableName);

Get get = new Get(rowKey.getBytes());

try {

Result result = table.get(get);

if (result.raw().length==0) {

System.out.println("查询的关键词"+rowKey+"不存在");

}else {

for (KeyValue kv : result.raw()) {

System.out.println(new String(kv.getKey())+"\t"+new String(kv.getValue()));

}

}

} catch (IOException e) {

e.printStackTrace();

}

}



/**

* 往表中加入一条记录

* @param tableName

* @param rowKey

* @param column

* @param qua

* @param value

*/

public void addOneRecord(String tableName, String rowKey, String column,

String qua, String value) {

HTablePool hTablePool = new HTablePool(conf, 1000);

HTableInterface table = hTablePool.getTable(tableName);

Put put = new Put(rowKey.getBytes());

put.add(column.getBytes(), qua.getBytes(), value.getBytes());

try {

table.put(put);

System.out.println("加入记录 "+rowKey+ " 成功!

");

} catch (IOException e) {

e.printStackTrace();

System.out.println("加入记录 "+rowKey+ " 失败。");

}

}

/**

* 查询全部表名

* @return

* @throws Exception

*/

public List<String> getALLTable() throws Exception {

ArrayList<String> tables = new ArrayList<String>();

if(admin!=null){

HTableDescriptor[] listTables = admin.listTables();

if (listTables.length>0) {

for (HTableDescriptor tableDesc : listTables) {

tables.add(tableDesc.getNameAsString());

System.out.println(tableDesc.getNameAsString());

}

}

}

return tables;

}

/**

* 创建一张表

* @param tableName

* @param column

* @throws Exception

*/

public void createTable(String tableName, String column) throws Exception {

if(admin.tableExists(tableName)){

System.out.println(tableName+"表已经存在。");

}else{

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

tableDesc.addFamily(new HColumnDescriptor(column.getBytes()));

admin.createTable(tableDesc);

System.out.println(tableName+"表创建成功!");

}

}

}

hbase 增删改查 api 简单操作的更多相关文章

  1. C# 对MongoDB 进行增删改查的简单操作

    C# 对MongoDB 进行增删改查的简单操作   下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库   /// & ...

  2. C# 对MongoDB 进行增删改查的简单操作 (转)

    运用到的MongoDB支持的C#驱动,当前版本为1.6.0 下载地址:https://github.com/mongodb/mongo-csharp-driver/downloads 1,连接数据库 ...

  3. MongoDB入门 常用命令以及增删改查的简单操作

    1,运行MongoDB服务mongod --dbpath=/usr/local/developmentTool/mongo/data/db/然后启动客户端mongo2,sudo service mon ...

  4. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  5. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  6. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  7. MongoDB - 增删改查及聚合操作

    目录 MongoDB - 增删改查及聚合操作 一. 数据库操作(database) 1. 创建及查看库 2. 删除库 二. 集合collectionc=操作(相当于SQL数据库中的表table) 1. ...

  8. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  9. HBase入门操作 常用命令和增删改查的简单应用操作

    这里启动关闭Hadoop和HBase的顺序一定是: 启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop ssh localhost 开启hadoopcd /us ...

随机推荐

  1. 如何判断页面是在移动端还是PC端打开的呢

    1. window.location.href = /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent) ? " ...

  2. BZOJ 3144 切糕 最小割

    题意: 一个矩阵,每个格子分配一个数,不同的数字,代价不同,要求相邻格子数字差小等于d 求最小代价. 分析: 我猜肯定有人看题目就想到最小割了,然后一看题面理科否决了自己的这个想法…… 没错,就是最小 ...

  3. 使用sphinx

    SQL   结构化查询语言(是一种标准,所有的关系型数据库Mysql,sqlserver,oracle) sphinx的使用两种方式: 第一种:  使用sphinx的API来操作sphinx   (常 ...

  4. nginx配置文件+本地测试请求转发到远程服务器+集群

    1 在本地测试1 众所周知,nginx是一个反向代理的服务器,主要功能即为实现负载均衡和动静分离.在别的我别的文章有详细的nginx(Windows)相关介绍教程. 由于自己安装的nginx在本地的计 ...

  5. 集训第六周 古典概型 期望 D题 Discovering Gold 期望

    Description You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell o ...

  6. PAT 1059. C语言竞赛

    PAT 1059. C语言竞赛 C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 冠军将赢得一份"神秘大奖"(比如很巨大的一本 ...

  7. 有趣的鼠标悬浮模糊效果总结---(filter,渐变文字)

    绘制渐变背景图 第一种:大神的想法,摘抄 background-image: -webkit-linear-gradient(left, blue, red 25%, blue 50%, red 75 ...

  8. 关于java对于大数处理的相关程序和用法

    <span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; l ...

  9. 莫(meng)比(bi)乌斯反演--BZOJ2301: [HAOI2011]Problem b

    n<=50000个询问,每次问a<=x<=b,c<=y<=d中有多少gcd(x,y)=K的(x,y).a,b,c,d,K<=50000. 这大概是入门题辣..这里记 ...

  10. Linux下汇编语言学习笔记44 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...