HBase 官方文档 0.97 http://abloz.com/hbase/book.html

HBase基本操作封装类(以课堂爬虫为例)

package cn.crxy.spider.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.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.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.util.Bytes; public class HbaseUtils { /**
* HBASE 表名称
*/
public static final String TABLE_NAME = "spider";
/**
* 列簇1 商品信息
*/
public static final String COLUMNFAMILY_1 = "goodsinfo";
/**
* 列簇1中的列
*/
public static final String COLUMNFAMILY_1_DATA_URL = "data_url";
public static final String COLUMNFAMILY_1_PIC_URL = "pic_url";
public static final String COLUMNFAMILY_1_TITLE = "title";
public static final String COLUMNFAMILY_1_PRICE = "price";
/**
* 列簇2 商品规格
*/
public static final String COLUMNFAMILY_2 = "spec";
public static final String COLUMNFAMILY_2_PARAM = "param"; HBaseAdmin admin = null;
Configuration conf = null; /**
* 构造函数加载配置
*/
public HbaseUtils() {
conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "192.168.1.177:2181");
conf.set("hbase.rootdir", "hdfs://192.168.1.177:9000/hbase");
try {
admin = new HBaseAdmin(conf);
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) throws Exception {
HbaseUtils hbase = new HbaseUtils();
// 创建一张表
// 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
} /**
* rowFilter的使用
*
* @param tableName
* @param reg
* @throws Exception
*/
public void getRowFilter(String tableName, String reg) throws Exception {
HTable hTable = new HTable(conf, tableName);
Scan scan = new Scan();
// Filter
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();
} } // 读取一条记录
/*
* @SuppressWarnings({ "deprecation", "resource" }) public Article
* get(String tableName, String row) { HTablePool hTablePool = new
* HTablePool(conf, 1000); HTableInterface table =
* hTablePool.getTable(tableName); Get get = new Get(row.getBytes());
* Article article = null; try {
*
* Result result = table.get(get); KeyValue[] raw = result.raw(); if
* (raw.length == 4) { article = new Article(); article.setId(row);
* article.setTitle(new String(raw[3].getValue())); article.setAuthor(new
* String(raw[0].getValue())); article.setContent(new
* String(raw[1].getValue())); article.setDescribe(new
* String(raw[2].getValue())); } } catch (IOException e) {
* e.printStackTrace(); } return article; }
*/ // 添加一条记录
public void put(String tableName, String row, String columnFamily,
String column, String data) throws IOException {
HTablePool hTablePool = new HTablePool(conf, 1000);
HTableInterface table = hTablePool.getTable(tableName);
Put p1 = new Put(Bytes.toBytes(row));
p1.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
Bytes.toBytes(data));
table.put(p1);
System.out.println("put'" + row + "'," + columnFamily + ":" + column
+ "','" + data + "'");
} /**
* 查询所有表名
*
* @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官方文档以及HBase基础操作封装类的更多相关文章

  1. hbase官方文档(转)

    FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南  HBase 官方文档中文版 Copyright © 2012 Apache Soft ...

  2. HBase 官方文档

    HBase 官方文档 Copyright © 2010 Apache Software Foundation, 盛大游戏-数据仓库团队-颜开(译) Revision History Revision ...

  3. HBase官方文档

    HBase官方文档 目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. Apache HBase (TM)配置 2.1. 基础条件 2.2. HBase 运行模式: 独立和分布式 2.3. ...

  4. HBase 官方文档0.90.4

    HBase 官方文档0.90.4 Copyright © 2010 Apache Software Foundation, 盛大游戏-数据仓库团队-颜开(译) Revision History Rev ...

  5. HBase官方文档 之 Region的相关知识

    HBase是以Region为最小的存储和负载单元(这里可不是HDFS的存储单元),因此Region的负载管理,关系到了数据读写的性能.先抛开Region如何切分不说,看看Region是如何分配到各个R ...

  6. HBase 官方文档中文版

    地址链接: http://abloz.com/hbase/book.html 里面包含基本的API和使用说明

  7. lavarel5.2官方文档阅读——架构基础

    <目录> 1.请求的生命周期 2.应用的架构 3.服务提供者 4.服务容器 5.Facades外立面(从这节起,看中文版的:https://phphub.org/topics/1783) ...

  8. gRPC官方文档(异步基础: C++)

    文章来自gRPC 官方文档中文版 异步基础: C++ 本教程介绍如何使用 C++ 的 gRPC 异步/非阻塞 API 去实现简单的服务器和客户端.假设你已经熟悉实现同步 gRPC 代码,如gRPC 基 ...

  9. 常用SQL_官方文档使用

    SQL语句基础理论 SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作关系型数据库. 5大主要类型: ①DQL(Data Query Language,数据查询语言)语句,主要由于se ...

随机推荐

  1. Linux内核同步 - classic RCU的实现

    一.前言 无论你愿意或者不愿意,linux kernel的版本总是不断的向前推进,做为一个热衷于专研内核的工程师,最大的痛苦莫过于此:当你熟悉了一个版本的内核之后,内核已经推进到一个新的版本,你曾经熟 ...

  2. 基于配置的Spring MVC3

    网上查找的spring mvc3大部分都是基于注射的方式,总感觉注射有点怪怪.不利于后期扩展和项目管理,于是特意写下这篇基于xml配置的Spring MVC3.以供大家參考. 怎么建立web项目和下载 ...

  3. mysql 返回多列的方式

    SELECT * FROM (SELECT 'success' as _result) a,(SELECT @gid as gid) b;

  4. windows server 2012 r2 8080外网访问端口发布设置

    windowser server 2012 r2 8080外网访问端口发布设置,在配置服务器时候,8080端口作为默认的web访问的端口,那么如何配置呢如下步骤: 工具/原料 windowser se ...

  5. Socket tips: 同意socket发送UDP Broadcast

    假设创建一个UDP Socket: socketHandle = socket(serverAddr->ai_family, serverAddr->ai_socktype, server ...

  6. OPENGL NEHE Lesson11 11课的计算公式推导

    计算多边形公式推导: 条件x 离散的值从0到45; y离散的值从0到45; z是符合正弦波. 问题: 1 要求x’=f(x)映射到 x’ ∈[-4.5, 4.5], x ∈{0, 1, 2, …, 4 ...

  7. JS实现随机数生成算法示例代码

    JS实现随机数生成算法的方法有很多,本文为大家介绍一个比较不错的方法. 1, var MT = []; var index = 0; function initialize_generator(see ...

  8. 基于Harbor和CephFS搭建高可用Private Registry

    我们有给客户搭建私有容器仓库的需求.开源的私有容器registry可供选择的不多,除了docker官方的distribution之外,比较知名的是VMware China出品的Harbor,我们选择了 ...

  9. 解决Java连接MySQL存储过程返回参数值为乱码问题

    先说MySQL的字符集问题.Windows下可通过修改my.ini内的 [mysql] default-character-set=utf8    //客户端的默认字符集 在MySQL客户端工具中输入 ...

  10. ny236 心急的C小加 hdoj1051 Wooden Sticks

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间 ...