public class HBase {
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
// conf.addResource("hbase-site-cluster.xml");//指定文件加载
conf = HBaseConfiguration.create(conf);
HBaseAdmin admin = new HBaseAdmin(conf);//HBaseAdmin负责跟表相关的操作如create,drop等
/**========创建表=========*/
HTableDescriptor desc = new HTableDescriptor("blog");
desc.addFamily(new HColumnDescriptor("article"));
desc.addFamily(new HColumnDescriptor("author"));
admin.createTable(desc );
HTable table = new HTable(conf, Bytes.toBytes("blog"));//HTabel负责跟记录相关的操作如增删改查等
/**=========插入数据=========*/
Put put = new Put(Bytes.toBytes("1"));
put.add(Bytes.toBytes("article"), Bytes.toBytes("title"), Bytes.toBytes("Head First HBase"));
put.add(Bytes.toBytes("article"), Bytes.toBytes("content"), Bytes.toBytes("HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data."));
put.add(Bytes.toBytes("article"), Bytes.toBytes("tags"), Bytes.toBytes("Hadoop,HBase,NoSQL"));
put.add(Bytes.toBytes("author"), Bytes.toBytes("name"), Bytes.toBytes("hujinjun"));
put.add(Bytes.toBytes("author"), Bytes.toBytes("nickname"), Bytes.toBytes("一叶渡江"));
table.put(put);
/**=========根据rowkey
Get get = new Get(Bytes.toBytes("1")); 查询数据=========*/
Result result = table.get(get);
for(KeyValue kv :result.list()){
System.out.println("family:" +Bytes.toString(kv.getFamily()));
System.out.println("qualifier:" +Bytes.toString(kv.getQualifier()));
System.out.println("value:" +Bytes.toString(kv.getValue()));
System.out.println("Timestamp:" +kv.getTimestamp());
}
/**=========遍历查询=========*/
Scan scan = new Scan();
ResultScanner rs =null;
try {
rs = table.getScanner(scan);
for (Result r : rs) {
for(KeyValue kv :r.list()){
System.out.println("family:" +Bytes.toString(kv.getFamily()));
System.out.println("qualifier:" +Bytes.toString(kv.getQualifier()));
System.out.println("value:" +Bytes.toString(kv.getValue()));
}
}
} finally {
rs.close();
}
/**=========更新=========*/
//查询更新前的值
Get get2 = new Get(Bytes.toBytes("1"));
get2.addColumn(Bytes.toBytes("author"), Bytes.toBytes("nickname"));
assertThat(Bytes.toString(table.get(get2).list().get(0).getValue()),is("一叶渡江"));
//更新nickname为yedu
Put put2 = new Put(Bytes.toBytes("1")); :
put2.add(Bytes.toBytes("author"), Bytes.toBytes("nickname"), Bytes.toBytes("yedu"));
table.put(put2);
//查询更新结果
Get get3 = new Get(Bytes.toBytes("1"));
get3.addColumn(Bytes.toBytes("author"), Bytes.toBytes("nickname"));
assertThat(Bytes.toString(table.get(get3).list().get(0).getValue()),is("yedu"));
//查询nickname的多个(本示例为2个)版本值
Get get4 = new Get(Bytes.toBytes("1"));
get4.addColumn(Bytes.toBytes("author"), Bytes.toBytes("nickname"));
get4.setMaxVersions(2);
List results = table.get(get4).list();
assertThat(results.size(),is(2));
assertThat(Bytes.toString(results.get(0).getValue()),is("yedu"));
assertThat(Bytes.toString(results.get(1).getValue()),is("一叶渡江"));
/**=========删除记录=========*/
//删除指定column
Delete deleteColumn = new Delete(Bytes.toBytes("1"));
deleteColumn.deleteColumns(Bytes.toBytes("author"),Bytes.toBytes("nickname"));
table.delete(deleteColumn);
assertThat( table.get(get4).list(),nullValue());
//删除所有column
Delete deleteAll = new Delete(Bytes.toBytes("1"));
table.delete(deleteAll);
assertThat(table.getScanner(scan).next(),nullValue());
/**=========删除表=========*/
admin.disableTable("blog");
admin.deleteTable("blog");
assertThat(admin.tableExists("blog"),is(false));
}
}
分享到:
相关推荐
通过Java API或HBase Shell创建表,插入数据,执行查询、扫描等操作。 4.3 性能优化 根据业务需求调整HBase配置,如Region大小、Compaction策略、BlockCache设置等,提升系统性能。 五、学习资源 参考链接:[博客...
- **Java API**: HBase提供了丰富的Java API,支持客户端进行数据的增删改查操作。 - **Eclipse集成**: 开发者可以通过Eclipse集成环境进行HBase应用程序的开发和调试。 - **常用工具**: 如HBase Shell、HBase REST ...
* Native Java API:最常规和高效的访问方式,适合 Hadoop MapReduce Job 并行批处理 HBase 表数据。 * HBase Shell:HBase 的命令行工具,最简单的接口,适合 HBase 管理使用。 * Thrift Gateway:利用 Thrift 序列...
《第1章 HBase入门》 HBase,全称为Hadoop Distributed File System,是一种构建在Hadoop文件系统(HDFS)之上的分布式列式数据库,是NoSQL数据库家族中的重要成员。本章将引领读者逐步深入HBase的世界,了解其核心...
1. Native Java API:最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据 2. HBase Shell:HBase的命令行工具,最简单的接口,适合HBase管理使用 3. Thrift Gateway:利用Thrift序列化技术,...
01.Storm项目实战课程大纲02.CDH5搭建之CM5安装部署03.CDH5搭建和CM界面化集群管理04.Hadoop、HBase、Zookeeper集群管理和角色分配05.Kafka基础知识和集群搭建06.Kafka基本操作和最优设置07.Kafka Java API 简单开发...
1. **Native Java API**:这是最常见的访问方式,适用于Hadoop MapReduce Job并行处理HBase表数据。 2. **HBase Shell**:一个命令行工具,适合进行基本的HBase管理和简单的数据操作。 3. **Thrift Gateway**:通过...
Client提供了多种访问接口,包括Java API、Shell命令、RESTful API等,方便用户与HBase交互。Zookeeper是集群的协调者,负责元数据管理、选举HMaster以及监控HRegionServer的状态。HMaster负责表的元数据管理、区域...
- **已经有一定编程基础的学习者**:尤其是那些具有Java编程经验的人士,将更容易理解如何使用Java API与HBase进行交互。 ### 前置知识要求 为了更好地理解和学习HBase,读者应该具备以下基础知识: - **熟悉...
HBase中文API为开发者提供了在中文环境中操作HBase的便利。 1. **入门** - **介绍**: HBase为大数据处理提供了实时读写能力,特别适合于存储海量稀疏数据。 - **快速开始**: 开发者通常需要了解如何创建表、插入...
在下面的流程图中,我们使用下面这样一个红色小图标来表示该数据所在的位置:数据位置标记HBase中提供了如下几种主要的接口:HBase的基础API,应用最为广泛。基于Shell的命令行操作接口,基于JavaClientAPI实现。...
#### 二、HBase 快速入门 - **介绍**:HBase 被设计用于处理大规模数据集(PB 级),并且支持实时数据读写。 - **快速开始**:通过简单步骤介绍如何快速搭建和使用 HBase,适合初学者快速上手。 #### 三、HBase ...
### HBase权威指南知识点概述 #### 一、书籍概览 ...综上所述,《HBase权威指南》不仅是一本详尽的HBase入门教材,还提供了深入的技术细节和实用的操作指南,非常适合希望全面了解HBase并掌握其实用技能的读者。