使用Java Api 对HBase进行简单操作
/**
* 功能:测试Hbase基本的增删改查操作
* Created by liuhuichao on 2016/12/5.
*/
public class HbaseCRUDTest {
public static Configuration configuration;
static{
configuration= HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum","lhc-centos");
}
/**
* 测试创建student表:测试已通过
* @throws IOException
*/
@Test
public void createTable() throws IOException {
HBaseAdmin admin=new HBaseAdmin(configuration); //HBaseAdmin负责管理HBase集群,添加和丢弃表
if(admin.tableExists("studentInfo")){
System.out.println("student表已经存在");
return;
}
HTableDescriptor descriptor=new HTableDescriptor("studentInfo");
descriptor.addFamily(new HColumnDescriptor("Name"));//创建列族,名字是Name
descriptor.addFamily(new HColumnDescriptor("Address"));//创建列族,名字是Address
admin.createTable(descriptor); //创建表
System.out.println("student表创建成功!!!");
}
/**
* 功能:想hbase中插入一行记录 --测试已通过
* @throws IOException
*/
@Test
public void insertHbaseStudentTable() throws IOException {
HTable table=new HTable(configuration, Bytes.toBytes("studentInfo"));
Put put=new Put(Bytes.toBytes("1"));
put.addColumn(Bytes.toBytes("Name"),Bytes.toBytes("firstName"),Bytes.toBytes("liu"));
put.addColumn(Bytes.toBytes("Name"),Bytes.toBytes("secondName"),Bytes.toBytes("huichao"));
put.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("province"),Bytes.toBytes("hebei"));
put.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("city"),Bytes.toBytes("baoding"));
put.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("area"),Bytes.toBytes("qingyuan"));
table.put(put);
}
/**
* 功能:根据行健获取数据
* @throws IOException
*/
@Test
public void getDataByRowKey() throws IOException {
HTable table=new HTable(configuration, Bytes.toBytes("studentInfo"));
Get get=new Get(Bytes.toBytes("1"));
Result result=table.get(get);
for(KeyValue kv :result.list()){
System.out.println("family:"+Bytes.toString(kv.getFamilyArray()));//所属列族名称
System.out.println("qualifier:"+Bytes.toString(kv.getQualifier()));//列名称
System.out.println("value:"+Bytes.toString(kv.getValue()));//存储的值
System.out.println("Timestamp:"+kv.getTimestamp());//获取时间戳
}
}
/**
* 功能:测试全表扫描
* @throws IOException
*/
@Test
public void selectHBaseScan() throws IOException {
HTable table=new HTable(configuration, Bytes.toBytes("studentInfo"));
/*遍历查询*/
Scan scan=new Scan();
ResultScanner rs=null;
try {
rs=table.getScanner(scan);
for(Result result : rs){
for(KeyValue kv : result.list()){
System.out.println("family:"+Bytes.toString(kv.getFamilyArray()));//所属列族名称
System.out.println("qualifier:"+Bytes.toString(kv.getQualifier()));//列名称
System.out.println("value:"+Bytes.toString(kv.getValue()));//存储的值
System.out.println("Timestamp:"+kv.getTimestamp());//获取时间戳
}
}
}finally {
rs.close();
}
}
/**
* 更新
* @throws Exception
*/
@Test
public void updateHBase() throws Exception{
HTable table=new HTable(configuration,Bytes.toBytes("studentInfo"));
Put put=new Put(Bytes.toBytes("1")); //设置行健
put.add(Bytes.toBytes("Address"),Bytes.toBytes("city"),Bytes.toBytes("beijing"));///更新的时候找对族名和列名,再给定新的value值就可以了
table.put(put);
}
/**
* 功能:查询nickname的多个(本示例为2个)版本值.
* @throws Exception
*/
@Test
public void selectSomeVersion() throws Exception{
HTable table=new HTable(configuration,Bytes.toBytes("studentInfo"));
Get get=new Get(Bytes.toBytes("1"));
get.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("city"));
// get.setMaxVersions(3);
List<KeyValue> results=table.get(get).list();
int total=results.size();
System.out.println("Address列族中city列的各个版本值");
for(int i=0;i<total;i++){
System.out.println(Bytes.toString(results.get(i).getValue()));
}
}
/**
* 功能:删除指定的某一行
* @throws Exception
*/
@Test
public void deleteColumn() throws Exception{
HTable table = new HTable(configuration, Bytes.toBytes("studentInfo"));//HTabel负责跟记录相关的操作如增删改查等
Delete deleteAll = new Delete(Bytes.toBytes("1"));
table.delete(deleteAll);
}
/**
* 功能:删除表
* @throws Exception
*/
@Test
public void deleteTable() throws Exception{
HBaseAdmin admin=new HBaseAdmin(configuration); //HBaseAdmin负责管理HBase集群,添加和丢弃表
admin.disableTable("student");
admin.deleteTable("student");
}
}
使用Java Api 对HBase进行简单操作的更多相关文章
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...
- 通过Java Api与HBase交互(转)
HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...
- Java使用poi对Execl简单操作_总结
poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一 ...
- HBase总结(十二)Java API 与HBase交互实例
HBase提供了Java Api的訪问接口,掌握这个就跟Java应用使用RDBMS时须要JDBC一样重要 import java.io.IOException; import org.apache.h ...
- 通过Java Api与HBase交互
HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...
- JAVA API访问Hbase org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=32
Java使用API访问Hbase报错: 我的hbase主节点是spark1 java代码访问hbase的时候写的是ip 结果运行程序报错 不能够识别主机名 修改主机名 修改主机hosts文 ...
- 使用JAVA API编程实现简易Habse操作
使用JAVA API编程实现下面内容: 1.创建<王者荣耀>游戏玩家信息表gamer,包含列族personalInfo(个人信息).recordInfo(战绩信息).assetsInfo( ...
- Java Api与HBase交互实例
import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hb ...
- Java中对session的简单操作
1.jsp中操作session <% String name=(String)request.getSession().getAttribute("username"); / ...
随机推荐
- 【[TJOI2017]异或和】
这道题挺神仙的,毕竟这个异或是需要进位的 看到区间和我们很自然的就想到了前缀和 于是处理一下前缀和答案就变成了这个样子 \[⊕\sum_{i=1}^n\sum_{j=1}^{i}pre_i-pre_{ ...
- 2048总结 JavaScript+jQuery(取元素方便,.css,text方法)
Html部分(界面):1.开始新游戏:2.返回上一步:3.记分栏: 4.16个小格组成: 其中1,2由链接形式实现. a标签中href属性调用js方法: <a href="javasc ...
- 【原创】纯CSS画黄金梅丽号!
代码如下 <!DOCTYPE html> <!-- saved from url=(0055)http://jadyoap.bj.bcebos.com/ife%2FcssCatAni ...
- 容器适配器(一):queue
除了标准的顺序容器外,STL还提供了3种容器适配器,queue,priority_queue和stack 适配器是对顺序容器的包装,它的作用是简化接口. queue接口十分的简单,只有8个方法.再加上 ...
- ArcSDE 数据迁移 Exception from HRESULT: 0x80041538问题及解决方案
一.问题描述 1.采用gdb模板文件,在ArcSDE(数据服务器)中批量创建数据库表(数据迁移)时,用到接口ESRI.ArcGIS.Geodatabase.IGeoDBDataTransfer的方法T ...
- "strace -p"非常有用,它减少了很多猜测工作,也不需要重新启动应用。lsof -p process_id +iostat + sar -n DEV 1
linux神器strace - youxin - 博客园https://www.cnblogs.com/youxin/p/8837771.html 某个进程突然占用了很多CPU? 或者某个进程看起来像 ...
- SharePoint2010代码启动工作流
1. private void StartWorkFlow() { //获得该列表上的发布的所有工作流 SPWorkflowAssociationCollection wfAssociationCol ...
- Oracle 日志挖掘(LogMiner)使用
Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装 Logminer 基本使用步骤 <1>. Specify a LogMin ...
- Oracle ddl 和 dml 操作
ddl 操作 窗口设置用户权限的方法 Oracle的数据类型 按住Ctrl点击表名 ,可以鼠标操作 插入的数据需要满足创建表的检查 主表clazz删除数据从表设置级联也会一同删除 有约束也 ...
- Springboot 启动文件报错,原因是@ComponentScan写成了@ComponentScans
Springboot 启动文件报错,原因是@ComponentScan写成了@ComponentScans