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. ORACLE中DBMS_SQL的用法

    ORACLE中DBMS_SQL的用法   对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤: open   cursor---> parse---> define ...

  2. Elasticsearch入门和基本使用

    1. 什么是Elasticsearch? Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统:Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开 ...

  3. Linux基础学习二

    新建分区:fdisk /dev/sda(a代表第一块硬盘)                   建完后w保存 更新分区表:partprobe mkfs.ext4 /dev/sdb{1..3} : 格式 ...

  4. 反连接NOT EXISTS子查询中有or 谓词连接条件SQL优化一例

    背景 今天在日常数据库检查中,发现一SQL运行时间特别长,于是抓取出来,进行优化. 优化前: 耗时:503s 返回:0 SQL代码 SELECT * FROM MM_PAYABLEMONEY_TD P ...

  5. Zabbix微信告警

    Zabbix微信告警 摘要 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信 ...

  6. Python面向对象之类属性类方法静态方法

    类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...

  7. 4. GC 算法(实现篇) - GC参考手册

    您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参考手册 GC 算法(基础篇) - GC参考手册 学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算 ...

  8. 81-Gator Oscillator,加多摆动指标.(2015.7.1)

    Gator Oscillator 加多摆动指标 Oscillator,加多摆动指标.(2015.7.1)" title="81-Gator Oscillator,加多摆动指标.(2 ...

  9. ppt_旋转抽奖_制作步骤

    1 ppt制作抽奖转盘 插入饼状图,更改比例,更改颜色(一般选取相邻的一组颜色匹配比较好看): 插入竖文本框,编辑每一个部分为特等奖.一等奖.二等奖.三等奖: 全部选中,ctrl+G组合: 添加陀螺旋 ...

  10. PowerShell Tools for Visual Studio 2015

    首先要去下载Visual Studio 2015 RC 版本 https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downl ...