1.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast.hbase</groupId>
<artifactId>hbase</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>0.99.2</version>
</dependency>
</dependencies>
</project>

2、API操作

package cn.itcast.bigdata.hbase;

import java.io.IOException;
import java.util.NavigableMap; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
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.client.Table;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; public class TestApi {
private Configuration config;
private Connection connection; @Before
public void before() throws IOException {
config = HBaseConfiguration.create();
// 配置zookeeper
config.set("hbase.zookeeper.quorum", "hadoop2,hadoop3,hadoop4");
config.set("hbase.zookeeper.property.clientPort", "2181");
connection = ConnectionFactory.createConnection(config); } /**
* @throws IOException
* 创建表
*/
@Test
public void testCreateTable() throws IOException {
Admin admin = connection.getAdmin();
// 表的描述类
HTableDescriptor desc = new HTableDescriptor(TableName.valueOf("user"));
// 列族的描述类
HColumnDescriptor family1 = new HColumnDescriptor("f1");
// 将列族信息和表的描述类进行关联
desc.addFamily(family1);
HColumnDescriptor family2 = new HColumnDescriptor("f2");
desc.addFamily(family2);
// 根据描述信息创建表
admin.createTable(desc);
admin.close();
} /**
* @throws IOException
* 删除表
*/
@Test
public void testDeleteTable() throws IOException {
Admin admin = connection.getAdmin();
TableName tableName = TableName.valueOf("user");
admin.disableTable(tableName);
admin.deleteTable(tableName);
admin.close();
} /**
* @throws IOException
* 添加数据
*/
@Test
public void testPut() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Put put = new Put("00001".getBytes());
// put 'user','00001','info1:name','zhangsan'
put.add("f1".getBytes(), "name".getBytes(), "zhangsan".getBytes());
table.put(put);
table.close(); } /**
* 删除数据
*
* @throws IOException
*/
@Test
public void testDelete() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Delete delete = new Delete("00001".getBytes());
table.delete(delete);
table.close();
} /**
* @throws IOException
* 单条查询
*/
@Test
public void testGet() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Get get = new Get("00001".getBytes());
Result row = table.get(get);
// 获取family f1下所有的名字 f1:name f1:age
NavigableMap<byte[], byte[]> familyMap = row.getFamilyMap("f1".getBytes());
// 遍历
for (byte[] nav : familyMap.navigableKeySet()) {
// 打印名字:name
System.out.println(new String(nav));
// 获取name对应的值:zhangsan
byte[] value = row.getValue("f1".getBytes(), nav);
System.out.println(new String(value));
}
table.close();
} /**
* @throws IOException
* 批量查询
*/
@Test
public void testScanner() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Scan scan = new Scan();
// 不设置起始和结束的话 为全表查询
scan.setStartRow("00001".getBytes());// 设置起始row
scan.setStopRow("000010".getBytes());// 设置结束 row
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
Cell[] rawCells = result.rawCells();
for (Cell cell : rawCells) {
System.out.println("value = " + new String(CellUtil.cloneValue(cell)));
System.out.println("family = " + new String(CellUtil.cloneFamily(cell)));
System.out.println("qualifier = " + new String(CellUtil.cloneQualifier(cell))); }
}
table.close(); } /**
* @throws IOException
* 关闭连接
*/
@After
public void after() throws IOException {
connection.close();
}
}

HBase第二章 基本API的更多相关文章

  1. 第二章 Stream API

    引例: 1 List<String> strList = Arrays.asList("zhaojigang","nana","tiany ...

  2. HTML5 WebSocket 权威指南 学习一 (第二章 WebSocket API)

    WebSocket 协议两种URL方案 ws 客户端和服务器之间的非加密流量 wss 客户端和服务器之间的加密流量 WebSocket Secure 表示使用传输层安全性(SSL)的WebSocket ...

  3. ArcGIS API for JavaScript 4.2学习笔记[10] 2D添加指北针widget、视图保存、视图padding(第二章完结)

    这几个例子是第二章除了入门之外比较简单的几个,就做个合集,把最核心的代码(第二参数)和 引用放上来即可,不作多解释. 2D地图添加指北针widget 2D地图一般修正方向为正北方就需要这个widget ...

  4. ArcGIS API for JavaScript 4.2学习笔记[3] 官方第二章Mapping and Views概览与解释

    目录如下: 连接:第二章 Mapping and Views 根据本人体会, [这一章节主要是介绍地图(Map)和视图(View)的.] 其中,Get started with MapView(2D) ...

  5. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  6. 第二章 NIO入门

    传统的同步阻塞式I/O编程 基于NIO的非阻塞编程 基于NIO2.0的异步非阻塞(AIO)编程 为什么要使用NIO编程 为什么选择Netty 第二章 NIO 入门 2.1 传统的BIO编程 2.1.1 ...

  7. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...

  8. 《驾驭Core Data》 第二章 Core Data入门

    本文由海水的味道编译整理,请勿转载,请勿用于商业用途.    当前版本号:0.4.0 第二章 Core Data入门 本章将讲解Core Data框架中涉及的基本概念,以及一个简单的Core Data ...

  9. [Effective Java]第二章 创建和销毁对象

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

随机推荐

  1. Java并发案例01---多线程之死锁

    多线程之死锁案例一 package example; /** * 模拟死锁 * @author maple * */ public class DeadLock { public int flag = ...

  2. [Python 多线程] RLock可重入锁 (九)

    RLock 可重复锁,是线程相关的锁.同样是线程相关的还有threading.local. 线程A获得可重用锁,并可以多次成功获取,不会阻塞.最后要再线程A中和acquire次数相同的release. ...

  3. EF直接的一對多多對多多對一的關係----也即是鏈錶查詢

    基于EF4.1 code first 简单的CRUD  园子中已经有很多了 ~~ 真不想再写这个了 可是为了做一个完整的小demo 从开始 到后面的一些简单重构 还是决定认真把这个写出来 争取写些别人 ...

  4. leetcode 20 括号匹配

    class Solution { public: bool isValid(string s) { stack<char> result; for(char c:s){ if(c == ' ...

  5. Apollo GPS调试笔记

    前言:在Apollo美研团队的支持下,最近完成了Apollo推荐的Novatel PP7与我们的基站调试,在这里对Apollo的笔记做一个补充,希望以后的开发者不用在踩我们踩过的坑. 在自己调导航(h ...

  6. Apollo2.5摄像头安装

    前言:在Apollo美研团队和长沙CiDi团队的支持下,最近完成了Apollo推荐的摄像头AR023ZWDR(Rev663F12)调试,在这里对Apollo的笔记做一个补充,希望以后的开发者不用在踩我 ...

  7. 404 Note Found 队-Alpha1

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内 ...

  8. PPP interface for lwIP

    //原文 地址 :http://www.nongnu.org/lwip/2_0_x/group__ppp.html /* //协议说明,2017年6月29日14:19:18,suozhang PPP ...

  9. HDFS的Write过程

    hadoop中重要的组成部分HDFS,它所发挥的重要作用是进行文件的后端存储.HDFS针对的是低端的服务器,场景为读操作多.写操作少的情况.在分布式存储情况下,比较容易出现的情况是数据的损害,为了保证 ...

  10. iOS文本文件的编码检测

    windows上很多文本未必是用UTF8,所以在iOS上读取的时候,如何得到文件的编码是个问题.网上有很多读取中文的例子,但是那些不够通用.比如说要读取日文,韩文,阿拉伯文等等的时候,就不行了(虽然一 ...