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. linux下设置python3.x为默认版本

    rm /usr/bin/python ln -s /usr/local/bin/python3.x /usr/bin/python sybomlic 安装目录 系统目录

  2. vue 轮播插件使用

    <template> <div> <Swiper ref="swiper" v-if="list.length > 0" : ...

  3. Python学习-range的用法

    range() 函数的用法 range(start,end,step):可以参见已连串的数字,常与for循环配合使用 参数详解如下 start:开始创建的起始位置,默认为0 end:开始创建的结束位置 ...

  4. 使用ajax解析后台json数据时:Unexpected token o in JSON at position 1

    json数据解析异常 今天在做json数据的时候,出现了如下错误,说是解析异常. VM1584:1 Uncaught SyntaxError: Unexpected token o in JSON a ...

  5. 合并多个MP4文件

    把多个MP4文件连接起来的方法与音频文件不太一样,比较有效的方法是: $ cat mylist.txt file '/path/to/file1' file '/path/to/file2' file ...

  6. PyQt5+requests实现车票查询工具

    PyQt5+requests实现一个车票查询工具,供大家参考,具体内容如下 结构图   效果图   思路 1.search(QPushButton)点击信号(clicked)连接到自定义的槽函数(ev ...

  7. [POJ3463] Sightseeing(次短路 Heap + Dijkstra)

    传送门 用dijkstra比较好,spfa可能有的重复 dis[x][2]:dis[x][0]表示起点到x的最短路.dis[x][1]表示起点到x的次短路: tot[x][2]:tot[x][0]表示 ...

  8. hihocoder #1034 : 毁灭者问题 平衡树(set)+线段树

    #1034 : 毁灭者问题 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁 ...

  9. 修改phpMyAdmin导入SQL文件的大小限制

    用phpMyAdmin导入mysql数据库时,我的10M的数据库不能导入,提示mysql数据库最大只能导入2M. phpMyAdmin数据库导入出错: You probably tried to up ...

  10. Parent and son

    Give you a tree with N vertices and N‐ 1 edges, and then ask you Q queries on “which vertex is Y's s ...