又这么久... 太懒了... 放个很久以前写的HBase基本API的示例程序代码吧,涉及crud操作和几个简单的filter
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.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.Filter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.filter.ValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseAPIDemoCode {
private static final Configuration config;
private static final HTablePool tablePool;
private static HBaseAdmin admin;
static {
config = HBaseConfiguration.create();
tablePool = new HTablePool(config, 10);
config.set("hbase.zookeeper.quorum", "master");
}
public static HBaseAdmin getHBaseAdmin() {
if (config == null) {
throw new RuntimeException("config null");
}
if (admin == null) {
try {
admin = new HBaseAdmin(config);
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
}
}
return admin;
}
public static HTable getHTable(final String tableName) {
return (HTable) tablePool.getTable(tableName);
}
public static void printResult(final Result result) {
byte[] family = null;
System.out.println("RowKey: " + Bytes.toString(result.getRow()));
for (KeyValue kv : result.raw()) {
family = kv.getFamily();
System.out.println("Column: " + Bytes.toString(family) + ":"
+ Bytes.toString(kv.getQualifier()));
System.out.println("Value: " + Bytes.toString(kv.getValue()));
}
}
public static void testCreateTable(final String tableName,
final String[] columnFamily) {
HBaseAdmin admin = getHBaseAdmin();
// if exists,delete first.
try {
if (admin.tableExists(tableName)) {
admin.disableTable(tableName);
admin.deleteTable(tableName);
}
HTableDescriptor htd = new HTableDescriptor(tableName);
for (String column : columnFamily) {
htd.addFamily(new HColumnDescriptor(column));
}
admin.createTable(htd);
System.out.println(tableName + " created!");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testDelTable(final String tableName) {
HBaseAdmin admin = getHBaseAdmin();
try {
admin.disableTable(tableName);
admin.deleteTable(tableName);
System.out.println(tableName + " deleted!");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testInsertData(final String tableName) {
HTable table = getHTable(tableName);
int rowIdStart = 10001;
int rowIdEnd = 10010;
int index = 1;
// put 10 cookies
List<Put> putList = new ArrayList<Put>();
for (; rowIdStart <= rowIdEnd; rowIdStart++) {
Put put = new Put(Bytes.toBytes(String.valueOf(rowIdStart)));
put.add(Bytes.toBytes("product"), Bytes.toBytes("proID"),
Bytes.toBytes(String.valueOf(index)));
put.add(Bytes.toBytes("product"), Bytes.toBytes("proTime"),
Bytes.toBytes(String.valueOf(new Date())));
if (index % 2 == 0) {
put.add(Bytes.toBytes("product"), Bytes.toBytes("proType"),
Bytes.toBytes("coco"));
} else {
put.add(Bytes.toBytes("product"), Bytes.toBytes("proType"),
Bytes.toBytes("milk"));
}
putList.add(put);
index++;
}
try {
table.put(putList);
table.close();
System.out.println("cookie data inserted!");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testQueryAll(final String tableName) {
HTable table = getHTable(tableName);
try {
ResultScanner scanner = table.getScanner(new Scan());
for (Result result : scanner) {
printResult(result);
}
table.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 删除rowKey不存在的记录,HBase会吞掉该错误。
public static void testDelARow(final String tableName, final String rowKey) {
HTable table = getHTable(tableName);
Delete del = new Delete(rowKey.getBytes());
try {
table.delete(del);
table.close();
System.out.println("RowKey: " + rowKey + " deleted!");
testQueryAll(tableName);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testGetARow(final String tableName, final String rowKey) {
HTable table = getHTable(tableName);
Get get = new Get(rowKey.getBytes());
try {
Result result = table.get(get);
List<KeyValue> resultList = result.list();
if (resultList == null) {
System.out.println(rowKey + " null!");
return;
}
printResult(result);
table.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testGetRowsByCookieType(final String tableName,
final String cookieType) {
HTable table = getHTable(tableName);
Filter vfilter = new ValueFilter(CompareOp.EQUAL,
new SubstringComparator(cookieType));
Scan scan = new Scan();
scan.setFilter(vfilter);
try {
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
printResult(result);
}
table.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testGetRowsBySingleColumn(final String tableName,
final String family, final String column, final String columnValue) {
HTable table = getHTable(tableName);
Filter vfilter = new SingleColumnValueFilter(Bytes.toBytes(family),
Bytes.toBytes(column), CompareOp.EQUAL,
Bytes.toBytes(columnValue));
Scan scan = new Scan();
scan.setFilter(vfilter);
try {
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
printResult(result);
}
table.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
final String tableName = "cookie";
// testCreateTable(tableName, new String[] { "product", "sale" });
// testInsertData(tableName);
// testDelTable(tableName);
// testQueryAll(tableName);
// testDelARow(tableName, "10010");
// testGetARow(tableName, "10011");
// testGetRowsByCookieType(tableName, "milk");
testGetRowsBySingleColumn(tableName, "product", "proType", "coco");
}
}
分享到:
相关推荐
### HBase Java API类介绍 #### 一、概述 HBase是一个分布式的、面向列的开源数据库,基于Google的Bigtable论文实现。它适合于非结构化数据存储,并且能够实时处理PB级别的数据。HBase提供了Java API供开发者使用...
HBase数据查询API HBase是一种分布式的、面向列的NoSQL数据库,主要应用于存储大量的半结构化数据。HBase提供了多种查询方式,包括单条查询和批量查询。 单条查询 单条查询是通过rowkey在table中查询某一行的数据...
自行制作的HBase 1.2.0 Javadoc API CHM版本。内容抽取自官方站点网页
hbase 1.0 对api做了较大改动,该文件对此做了详细说明
在本文中,我们将深入探讨如何使用HBase的Java API进行数据的增加、修改和删除操作。HBase是一个基于Google Bigtable设计的开源分布式数据库,它属于Apache Hadoop生态系统的一部分,适用于处理大规模数据存储。通过...
"hbase java api 所需最精简 jar"这个标题意味着我们将探讨的是为了在Java环境中最小化依赖,但仍能实现基本HBase操作所需的JAR文件。 首先,我们需要理解HBase Java API的核心组件。HBase的Java客户端API提供了一...
HBase Java API HBase 是 Hadoop 的数据库,能够对大数据提供随机、实时读写访问。他是开源的,分布式的,多版本的,面向列的,存储模型。HBase 的整体结构主要包括 HBase Master、HRegion 服务器和 HRegion Server...
HBase Shell API 操作详解 HBase 是一个基于分布式文件系统的 NoSQL 数据库,提供了丰富的 API 来进行数据操作。在本实验中,我们将使用 HBase Shell API 来实现基本的数据操作,包括创建表、查看所有表、插入数据...
"Hbase 0.9 API"指的是HBase在0.94.5版本中的客户端API,这个版本是HBase发展历史上的一个重要里程碑,为开发者提供了丰富的功能来操作HBase数据库。 首先,HBase的API主要分为两种:Java API和Shell命令。Java API...
HBase-APi操作demo
使用JavaAPI实现HBase的ddl(创建表、删除表、修改表(添加列族等))、dml(添加数据、删除数据)、dql(查询数据(get、scan))等操作 除此之外还包含一些其他操作:命名空间的应用、快照的应用等 对应(《HBase...
hbase的api手册,包含hbase的变成接口和参数说明
标题 "Hadoop+HBase+Java API" 涉及到三个主要的开源技术:Hadoop、HBase以及Java API,这些都是大数据处理和存储领域的关键组件。以下是对这些技术及其结合使用的详细介绍: **Hadoop** 是一个分布式计算框架,由...
HBase中文API为开发者提供了在中文环境中操作HBase的便利。 1. **入门** - **介绍**: HBase为大数据处理提供了实时读写能力,特别适合于存储海量稀疏数据。 - **快速开始**: 开发者通常需要了解如何创建表、插入...
Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472
HBase API chm hadoop 分布式 java HBase0.90.4_API.chm
在HBase这个分布式列式数据库中,Java API是开发者常用的一种接口来操作HBase,包括创建表、插入数据、查询数据以及实现分页等操作。本文将深入探讨如何使用HBase Java API进行数据访问和分页查询。 首先,我们要...
hbase文档api,用于hbase开发,随意看看就行;hbase文档api,用于hbase开发,随意看看就行;hbase文档api,用于hbase开发,随意看看就行;hbase文档api,用于hbase开发,随意看看就行
Apache HBase 2.1.5 API chm格式文档 hbase-apache离线官方文档
这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase中批量导入数据。在这个过程中,我们将探讨以下几个关键知识点: 1. **HBase架构**: HBase是基于列族的存储模型,数据被...