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. 一次URL请求过程--tomcat

    一:请求的过程 1.DNS域名解析 2.建立TCP连接(三次握手) 3.发送请求--tomcat进行处理 4.四次挥手关闭连接 二:详解1---DNS域名解析 1.浏览器会检查缓存中有没有这个域名对应 ...

  2. win10永久激活

    现在我们可以看下当前系统的激活状态,查看方法"WIN+R"打开运行对话框,输入命令slmgr.vbs -xpr,点击确定,这样可以查看到当前系统的激活信息.大家可以发现,虽然小编系 ...

  3. C#DateTimeFormatInfo类

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzAAAACdCAIAAADkAArhAAAgAElEQVR4nO1dWXbjug7UzrI0LS1L0/ ...

  4. 新进Linux菜鸟,请多多关照

    早早知晓Linux的大名,一直未研究学习,近来看了kernel一些源代码,在网上搜过很多基础的知识.感觉这个Linux的世界很广大,值得好好深入学习.初生婴儿,呱呱落地,必先躺若干日后能坐,在学爬,进 ...

  5. Jupyter notebook使用笔记

    常用快捷键 For a Cell,   Blue -> selecting. Green -> editing. Esc -> exist edit When the cell is ...

  6. [luoguP1015] 回文数(模拟 + 高精度?)

    传送门 类似高精的操作... 代码 #include <cstdio> #include <cstring> #include <iostream> #define ...

  7. 582. Kill Process

    Problem statement: Given n processes, each process has a unique PID (process id) and its PPID (paren ...

  8. 关于jquery stopPropagation()阻止冒泡事件

    我们经常会遇到点击两个或者多个重叠的层事件的时候,往往点击最里的的一层会接连触发外面的点击事件.这时候就需要用到stopPropagation事件即阻止冒泡事件html代码如下<!DOCTYPE ...

  9. 基于jQuery的图片加载loading效果插件

    基于jQuery的图片加载loading效果插件 图片loading的效果是网页中比较常见的,尤其是对大图片,loading效果让用户能够明白图片加载的过程. 实现思路也是比较简单的: $.fn.Lo ...

  10. P1765 手机_NOI导刊2010普及(10)

    P1765 手机_NOI导刊2010普及(10) 题目描述 一般的手机的键盘是这样的: 1 2 abc 3 def 4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz * 0 ...