hbase java Api练习
package cn.itcast_01_hbase;
import java.util.ArrayList;
import java.util.List;
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.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.HBaseAdmin;
import org.apache.hadoop.hbase.client.HConnection;
import org.apache.hadoop.hbase.client.HConnectionManager;
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.apache.hadoop.hbase.filter.ColumnPrefixFilter;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class HbaseTest_2 {
/**
* 配置ss
*/
static Configuration config = null;
private Connection connection = null;
private Table table = null;
@Before
public void init() throws Exception {
config = HBaseConfiguration.create();// 配置
//这里没有配置好像用的是path里面的hbase,这个程序是在linunx中
//运行的,所以 没有问题,下面的配置是集群中的,但是由于集群没有搭建起来
//用的是单机的
//config.set("hbase.zookeeper.quorum", "master,work1,work2");// zookeeper地址
//config.set("hbase.zookeeper.property.clientPort", "2181");// zookeeper端口
/*connection = ConnectionFactory.createConnection(config);
table = connection.getTable(TableName.valueOf("www.baidu.com20170630"));*/
connection = ConnectionFactory.createConnection(config);
table = connection.getTable(TableName.valueOf("t4"));
}
/**
* 创建一个表
*
* @throws Exception
*/
@Test
public void createTable() throws Exception {
//创建表管理
HBaseAdmin admin = new HBaseAdmin(config);
TableName tableName = TableName.valueOf("t4");
HTableDescriptor desc = new HTableDescriptor(tableName);
HColumnDescriptor family = new HColumnDescriptor("info");//
desc.addFamily(family);
HColumnDescriptor family2 = new HColumnDescriptor("ino2");
desc.addFamily(family2);
admin.createTable(desc);
}
@Test
@SuppressWarnings("deprecation")
public void deleteTable() throws MasterNotRunningException,
ZooKeeperConnectionException, Exception {
HBaseAdmin admin = new HBaseAdmin(config);
admin.disableTable("t3");
admin.deleteTable("t3");
admin.close();
}
/**
* 向hbase中增加数据
*
* @throws Exception
*/
@SuppressWarnings({ "deprecation", "resource" })
@Test
public void insertData() throws Exception {
List<Put> arraylist = new ArrayList<Put>(1);
Put put = new Put(Bytes.toBytes("1223434"));//rowkey
put.add(Bytes.toBytes("info"),Bytes.toBytes("name"),Bytes.toBytes("huangxiaoming"));
put.add(Bytes.toBytes("info"),Bytes.toBytes("password"),Bytes.toBytes("anglebaby"));
put.add(Bytes.toBytes("info"),Bytes.toBytes("age"),Bytes.toBytes("25"));
put.add(Bytes.toBytes("info"),Bytes.toBytes("gender"),Bytes.toBytes("1"));
arraylist.add(put);
//提交
table.put(arraylist);
//插入数据
table.flushCommits();
}
/**
* 修改数据,不存在时新增
*
* @throws Exception
*/
@Test
public void uodateData() throws Exception {
Put put = new Put(Bytes.toBytes("323422"));
put.add(Bytes.toBytes("info"), Bytes.toBytes("name_B"), Bytes.toBytes("郭德纲"));
put.add(Bytes.toBytes("info"), Bytes.toBytes("password_A"), Bytes.toBytes(1234));
Put put1 = new Put(Bytes.toBytes("323432"));
put1.add(Bytes.toBytes("info"), Bytes.toBytes("name_B"), Bytes.toBytes("沙河上"));
put1.add(Bytes.toBytes("info"), Bytes.toBytes("password_B"), Bytes.toBytes(1234));
Put put2 = new Put(Bytes.toBytes("323442"));
put2.add(Bytes.toBytes("info"), Bytes.toBytes("name_B"), Bytes.toBytes("猪八戒"));
put2.add(Bytes.toBytes("info"), Bytes.toBytes("password_B"), Bytes.toBytes(1234));
//插入数据
table.put(put);
table.put(put1);
table.put(put2);
//提交
table.flushCommits();
}
/**
* 删除数据
*
* @throws Exception
*/
@Test
public void deleteDate() throws Exception {
Delete delete = new Delete(Bytes.toBytes("1234"));
table.delete(delete);
table.flushCommits();
}
/**
* 单条查询
*
* @throws Exception
*/
@Test
public void queryData() throws Exception {
Get get =new Get(Bytes.toBytes("1234"));
//get.addColumn(Bytes.toBytes("info"), Bytes.toBytes("password"));//根据列族查询列名字查询
get.addFamily(Bytes.toBytes("info"));//根据列族查询
Result result = table.get(get);
long start = System.currentTimeMillis();
System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password"))));
System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"))));
long end = System.currentTimeMillis();
System.out.println(end-start);
}
/**
* 全表扫描
*
* @throws Exception
*/
@Test
public void scanData() throws Exception {
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes("1"));
scan.setStopRow(Bytes.toBytes("z"));//
//scan.addFamily(Bytes.toBytes("info"));
scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"));
ResultScanner scanner = table.getScanner(scan);
for(Result result : scanner){
System.out.print(Bytes.toString(result.getRow())+";");//rowkey
System.out.print(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")))+";");
System.out.print(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))+";");
System.out.println();
}
}
private void printScanner(ResultScanner scanner ){
for(Result result : scanner){
System.out.print(Bytes.toString(result.getRow())+";");//rowkey
System.out.print(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")))+";");
System.out.print(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))+";");
System.out.println();
}
}
/**
* 全表扫描的过滤器
* 列值过滤器
*
* @throws Exception
*/
@Test
public void scanDataByFilter1() throws Exception {
Scan scan = new Scan();
SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("name"), CompareOp.GREATER, Bytes.toBytes("lisi1234"));
scan.setFilter(filter);
ResultScanner scanner = table.getScanner(scan);
printScanner(scanner);
}
/**
* rowkey过滤器
* @throws Exception
*/
@Test
public void scanDataByFilter2() throws Exception {
Scan scan = new Scan();
RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("^2"));
scan.setFilter(rowFilter);
ResultScanner scanner = table.getScanner(scan);
printScanner(scanner);
}
/**
* 匹配列名前缀
* @throws Exception
*/
@Test
public void scanDataByFilter3() throws Exception {
Scan scan = new Scan();
ColumnPrefixFilter columnPrefixFilter = new ColumnPrefixFilter(Bytes.toBytes("n"));
//scan.addFamily(Bytes.toBytes("info"));
scan.setFilter(columnPrefixFilter);
ResultScanner scanner = table.getScanner(scan);
printScanner(scanner);
}
@Test
public void scanDataByFilter44() throws Exception {
//MultipleColumnPrefixFilter 和 ColumnPrefixFilter 行为差不多,但可以指定多个前缀
Scan scan = new Scan();
byte[][] prefixes = new byte[][] {Bytes.toBytes("na"),Bytes.toBytes("p")};
//Filter f = new MultipleColumnPrefixFilter(prefixes);
MultipleColumnPrefixFilter filter = new MultipleColumnPrefixFilter(prefixes);
scan.setFilter(filter);
ResultScanner scanner = table.getScanner(scan);
printScanner(scanner);
}
/**
* 过滤器集合
* @throws Exception
*/
@Test
public void scanDataByFilter4() throws Exception {
// 创建全表扫描的scan
Scan scan = new Scan();
FilterList filters = new FilterList(Operator.MUST_PASS_ALL);
RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("^2"));
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("name"), CompareOp.NOT_EQUAL, Bytes.toBytes("lisi"));
filters.addFilter(rowFilter);
filters.addFilter(singleColumnValueFilter);
scan.setFilter(filters);
ResultScanner scanner = table.getScanner(scan);
printScanner(scanner);
}
@After
public void close() throws Exception {
table.close();
connection.close();
}
}
数据库表
scan 't4'
ROW COLUMN+CELL
column=info:age, timestamp=, value=
column=info:gender, timestamp=, value=
column=info:name, timestamp=, value=lisi1234
column=info:password, timestamp=, value=\x00\x12\xD5.
column=info:name, timestamp=, value=lisi1234
column=info:password, timestamp=, value=\x00\x12\xD5.
column=info:name, timestamp=, value=sudan
column=info:password, timestamp=, value=\x00\x00\x00\x17
column=info:name, timestamp=, value=hanmei
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE9\x83\xAD\xE5\xBE\xB7\xE7\xBA\xB2
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=sunwukong
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE6\xB2\x99\xE6\xB2\xB3\xE4\xB8\x8A
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE7\x8C\xAA\xE5\x85\xAB\xE6\x88\x92
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE7\x8C\xAA\xE5\x85\xAB\xE6\x88\x92
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE9\x83\xAD\xE5\xBE\xB7\xE7\xBA\xB2
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE6\xB2\x99\xE6\xB2\xB3\xE4\xB8\x8A
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE7\x8C\xAA\xE5\x85\xAB\xE6\x88\x92
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE9\x83\xAD\xE5\xBE\xB7\xE7\xBA\xB2
column=info:name_A, timestamp=, value=\xE9\x83\xAD\xE5\xBE\xB7\xE7\xBA\xB2
column=info:name_B, timestamp=, value=\xE9\x83\xAD\xE5\xBE\xB7\xE7\xBA\xB2
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:password_A, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE6\xB2\x99\xE6\xB2\xB3\xE4\xB8\x8A
column=info:name_A, timestamp=, value=\xE6\xB2\x99\xE6\xB2\xB3\xE4\xB8\x8A
column=info:name_B, timestamp=, value=\xE6\xB2\x99\xE6\xB2\xB3\xE4\xB8\x8A
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:password_A, timestamp=, value=\x00\x00\x04\xD2
column=info:password_B, timestamp=, value=\x00\x00\x04\xD2
column=info:name, timestamp=, value=\xE7\x8C\xAA\xE5\x85\xAB\xE6\x88\x92
column=info:name_A, timestamp=, value=\xE7\x8C\xAA\xE5\x85\xAB\xE6\x88\x92
column=info:name_B, timestamp=, value=\xE7\x8C\xAA\xE5\x85\xAB\xE6\x88\x92
column=info:password, timestamp=, value=\x00\x00\x04\xD2
column=info:password_A, timestamp=, value=\x00\x00\x04\xD2
column=info:password_B, timestamp=, value=\x00\x00\x04\xD2
row(s) in 0.0790 seconds hbase(main)::>
hbase java Api练习的更多相关文章
- 【Hbase学习之三】Hbase Java API
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-2.6.5 hbase-0.98.12.1-h ...
- hbase java api样例(版本1.3.1,新API)
hbase版本:1.3.1 目的:HBase新API的使用方法. 尝试并验证了如下几种java api的使用方法. 1.创建表 2.创建表(预分区) 3.单条插入 4.批量插入 5.批量插入(客户端缓 ...
- hbase java API跟新数据,创建表
package hbaseCURD; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import o ...
- HBase 学习之路(六)——HBase Java API 的基本使用
一.简述 截至到目前(2019.04),HBase 有两个主要的版本,分别是1.x 和 2.x ,两个版本的Java API有所不同,1.x 中某些方法在2.x中被标识为@deprecated过时.所 ...
- HBase 系列(六)——HBase Java API 的基本使用
一.简述 截至到目前 (2019.04),HBase 有两个主要的版本,分别是 1.x 和 2.x ,两个版本的 Java API 有所不同,1.x 中某些方法在 2.x 中被标识为 @depreca ...
- Hbase Java API详解
HBase是Hadoop的数据库,能够对大数据提供随机.实时读写访问.他是开源的,分布式的,多版本的,面向列的,存储模型. 在讲解的时候我首先给大家讲解一下HBase的整体结构,如下图: HBase ...
- Hbase Java API程序设计步骤
http://www.it165.net/admin/html/201407/3390.html 步骤1:创建一个Configuration对象 包含了客户端链接Hbase服务所需的全部信息: zoo ...
- HBase Java API使用(一)
前言 1. 创建表:(由master完成) 首先需要获取master地址(master启动时会将地址告诉zookeeper)因而客户端首先会访问zookeeper获取master的地址 client和 ...
- Hbase(六) hbase Java API
一. 几个主要 Hbase API 类和数据模型之间的对应关系: 1. HBaseAdmin关系: org.apache.hadoop.hbase.client.HBaseAdmin作用:提供了一个接 ...
- Hbase Java API包括协处理器统计行数
package com.zy; import java.io.IOException; import org.apache.commons.lang.time.StopWatch; import or ...
随机推荐
- Tomcat 访问 Manager App,Host Manager
1.启动tomcat,在浏览器输入:http://localhost:8080/ 2.配置tomcat-users.xml 文件 在主目录的cong文件夹下找到tomcat-users.xml 文件 ...
- os.waitpid()无法获取sys.exit()退出时的status code
[目的] 父进程使用os.waitpid()等待子进程退出,并检测子进程的exit code,以决定是否重启子进程. (常见的应用场景是:子进程接收外部命令,收到"stop"时退出 ...
- (转)Scala的“=>”符号简介
Scala中的=>符号可以看做是创建函数实例的语法糖.例如:A => T,A,B => T表示一个函数的输入参数类型是“A”,“A,B”,返回值类型是T.请看下面这个实例: scal ...
- 云计算之路-试用Azure:一次失败的SQL Server向SQL Azure的迁移尝试
如果数据库用的是SQL Server,那SQL Azure无疑是最吸引人的地方之一.在测试了虚拟机磁盘IO之后,我们迫不急待地进行了SQL Azure的测试. (一) 首先进入manage.windo ...
- static 关键字 静态属性与方法 -> :: self $this 区别 可见性的关键字区别
1.声明类属性或方法为静态,就可以不实例化类而直接访问.静态属性不能通过一个类已实例化的对象来访问(但静态方法可以). 2.由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可 ...
- Linux下SVN部署/安全及权限配置,实现web同步更新
转自:http://www.cnblogs.com/me115/archive/2013/04/07/3002058.html 本文包含以下内容: SVN服务器安装 SVN权限管理 SVN使用SASL ...
- CVTE电话面试
Cvte电话面试 1. SVM和逻辑回归的相同不同点 2. 特征值和奇异值的区别 3. 如何找到全局最优解,梯度下降和牛顿法区别 4. 防止过拟合的方法 5. 随机森林和ADBOOST方差和偏置 6. ...
- input-form-select-a-img-ul-dl标签
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 关于wxpy,使用Python玩转微信的问题
在github上下载了,安装了之后在idle上运行,好像是说Python不能上网.新手求助.现在问题已经解决,是ssl 证书的问题,不能用最新的 复制内容到剪贴板 代码: sudo pip unins ...
- 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)
把一个base64编码的图片绘制到canvas 需要引入jquery. <canvas id="myCanvas" width="800" height= ...