HBase基本操作-Java实现
创建Table
public static void createTable(String tableName){
try {
HBaseAdmin hbaseAdmin = new HBaseAdmin(HBaseConfiguration.create());
if(hbaseAdmin.tableExists(tableName)){
hbaseAdmin.disableTable(tableName);
hbaseAdmin.deleteTable(tableName);
System.out.println("Table "+ tableName +" is already exist");
}
// HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
//新版 API
HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
hTableDescriptor.addFamily(new HColumnDescriptor("name"));
hTableDescriptor.addFamily(new HColumnDescriptor("course"));
hTableDescriptor.addFamily(new HColumnDescriptor("address"));
hbaseAdmin.createTable(hTableDescriptor);
hbaseAdmin.close();
System.out.println("Create table "+ tableName +" finish...");
} catch (IOException e) {
e.printStackTrace();
}
}
插入数据
public static void insertDate(String tableName){
try {
HTable hTable = new HTable(HBaseConfiguration.create(),tableName);
Put putRow = null;
for(int i=1;i<=1000;i++){
putRow = new Put(("rowkey"+i).getBytes());
putRow.add("name".getBytes(), null, getNameByRandom());
putRow.add("course".getBytes(), "CHINESE".getBytes(), getScoreByRandom());
putRow.add("course".getBytes(), "ENGLISH".getBytes(), getScoreByRandom());
putRow.add("course".getBytes(), "MATH".getBytes(), getScoreByRandom());
putRow.add("address".getBytes(), "CITY".getBytes(), getNameByRandom());
putRow.add("address".getBytes(), "STREET".getBytes(), getNameByRandom());
putRow.add("address".getBytes(), "PROVINCE".getBytes(), getNameByRandom());
hTable.put(putRow);
}
hTable.close();
System.out.println("Insert finish...");
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] getScoreByRandom() {
return (((int)(Math.random()*60)+40)+"").getBytes();
}
public static byte[] getNameByRandom() {
int length = (int)(Math.random()*5)+3;
String nameStr = ""+(char)((int)(Math.random()*26)+'A');
for(int i=1;i<length;i++){
char c = (char)((int)(Math.random()*26)+'a');
nameStr+=c;
}
return nameStr.getBytes();
}
查询数据
public static void queryByRowKeyFamily(String tableName,String rowKey,String family){
try {
HTable table = new HTable(HBaseConfiguration.create(), tableName);
Get getRow = new Get(Bytes.toBytes(rowKey));
getRow.addFamily(family.getBytes());
Result result = table.get(getRow);
for(KeyValue kv:result.list()){
System.out.println(new String(kv.getFamily())+"."+new String(kv.getQualifier())+" "+new String(kv.getValue()));
}
System.out.println(Bytes.toString(result.getRow()));
table.close();
} catch (IOException e) {
e.printStackTrace();
}
}
HBase基本操作-Java实现的更多相关文章
- hbase的Java基本操作
hbase的Java基本操作 建表,建列簇操作 private static Connection connection; private static Admin admin; public sta ...
- hbase使用-java操作
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courie ...
- Hbase配置java客户端
1.修改windows配置文件 C:\WINDOWS\system32\drivers\etc\hosts 将远程hbase和zookeeper主机的IP地址加进去 54.0.88.53 H ...
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...
- 5 hbase-shell + hbase的java api
本博文的主要内容有 .HBase的单机模式(1节点)安装 .HBase的单机模式(1节点)的启动 .HBase的伪分布模式(1节点)安装 .HBase的伪分布模式(1节点)的启动 .HBase ...
- HBase的Java Api连接失败的问题及解决方法
分布式方式部署的HBase,启动正常,Shell操作正常,使用HBase的Java Api操作时总是连接失败,信息如下: This server is in the failed servers li ...
- hbase-shell + hbase的java api
本博文的主要内容有 .HBase的单机模式(1节点)安装 .HBase的单机模式(1节点)的启动 .HBase的伪分布模式(1节点)安装 .HBase的伪分布模式(1节点)的启动 .HBas ...
- HBase的java操作,最新API。(查询指定行、列、插入数据等)
关于HBase环境搭建和HBase的原理架构,请见笔者相关博客. 1.HBase对java有着较优秀的支持,本文将介绍如何使用java操作Hbase. 首先是pom依赖: <dependency ...
- Hbase关于Java常用API举例
1. HBase相关对Admin操作的的API封装在HBaseAdmin中,封装了HBase常用操作的API 使用方法: pom.xml <!-- https://mvnrepository.c ...
随机推荐
- B. Counting-out Rhyme(约瑟夫环)
Description n children are standing in a circle and playing the counting-out game. Children are numb ...
- 20172311-ASL测试 2018-1938872补充博客
20172311-ASL测试 2018-1938872补充博客 课程:<程序设计与数据结构> 班级: 1723 姓名: 赵晓海 学号: 20172311 实验教师:王志强老师 测试日期:2 ...
- 02-JAVA 初始化
构造器 概念:在创建对象时被自动调用的方法,构造器采用和类名一样的名称 创建对象时,会为其分配存储空间,并调用相应的构造器进行初始化.这就确保了在操作对象之前,这个对象已经被恰当的初始化了. 不接受仁 ...
- Hexo博客搭建全解
[原创,转载请附网址:http://dongshuyan.top] 欢迎来到莫与的博客,第一篇记录了一下怎么写一篇博客,以方便之后写博客~ #从配置说起下载安装Git与Node.js略过 1.安装he ...
- Myeclipse错误:Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project ...解决方法
解决办法:1.首先关闭MyEclipse工作空间.2.然后删除工作空间下的“/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.gen ...
- Linux系统中增加swap空间大小
在我的树莓派pi3上编译dlib库时,发现由于内存不足导致编译失败.树莓派是1G内存,swap只有50M,因此将swap增加到500M,编译通过.具体设置方法如下: 使用free命令带上m参数,查看s ...
- jQuery异步Deferred
原文链接:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html 普通 ...
- Netty系列学习
Netty系列之Netty高性能之道 Netty系列之Netty线程模型 Netty系列之Netty 服务端创建 Netty系列之Netty编解码框架分析 Netty系列之Netty百万级推送服务设计 ...
- Android四大组件之Activity & Fragement(续)
1.Activity和Fragment的异同. Activity是UI界面交互的主体,而fragment是这个主体上的元素. 一个activity可以包含0到n个fragment. fragment可 ...
- Mac OS X 10.11.1下搭建Python3.4 + PyQt5.5.1 +Eric6.1.1开发平台
由于Python易学.开源.面向对象.可移植性高.库丰富的特点,近期开始学习Python.百度了解了各款Python IDE后,还是认为Eric比较适合我,所以踏上了安装Eric坎坷之路,从选定工具到 ...