JAVA操作Hbase基础例子
package com.cma.hbase.test;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import com.cma.hbase.Constants;
import com.cma.hbase.entity.DataModel;
import com.cma.hbase.tools.HbaseUtils;
public class HbaseTest {
public static void main(String[] args) {
创建一张表
createTable("hello_baby",new String[]{"code","ws","wd","t","ps","rh","vis","r"});
写入一条数据
writeRecord("hello_baby","row1","code","","code");
writeRecord("hello_baby","row1","ws","","ws");
writeRecord("hello_baby","row1","wd","","wd");
writeRecord("hello_baby","row1","t","","t");
writeRecord("hello_baby","row1","ps","","ps");
writeRecord("hello_baby","row1","rh","","rh");
writeRecord("hello_baby","row1","vis","","vis");
writeRecord("hello_baby","row1","r","","r");
写入一组数据
writeRecordList("hello_baby");
//查询出一条数据
getRecord("hello_baby","row1");
删除一行
deleteRecord("hello_baby","row1");
删除一张表
dropTable("hello_baby");
清空一张表
clearTable("hello_baby");
}
/**
* 清空一张表
* @param string
*/
private static void clearTable(String tableName) {
Configuration cfg = HbaseUtils.getCfg();
try {
HBaseAdmin admin = new HBaseAdmin(cfg);
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("tableName: "+tableName+" drop over!");
}
}
/**
* 写入一组数据
* @param tableName
*/
private static void writeRecordList(String tableName) {
Long start = System.currentTimeMillis();
Configuration cfg = HbaseUtils.getCfg();
try {
HTable htable = new HTable(cfg,tableName);
List<Put> puts = getPuts();
System.out.println(puts.size());
htable.put(puts);
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("tableName:"+tableName+" write over!");
}
Long end = System.currentTimeMillis();
System.out.println("cost time: "+(end -start));
}
private static List<Put> getPuts() {
List<Put> putList = new ArrayList<Put>();
List<Put> putRecord = null;
try {
List<String> lines = FileUtils.readLines(new File("/home/guest/data/201307310800.csv"));
for(int i = 1 ;i < lines.size();i++){
putRecord = getPutsByLine(lines.get(i));
putList.addAll(putRecord);
}
} catch (IOException e) {
e.printStackTrace();
}
return putList;
}
/**
* 获得一组Put
* @param line
* @return
*/
private static List<Put> getPutsByLine(String line) {
List<Put> puts = new ArrayList<Put>();
Put put = null;
if(StringUtils.isNotBlank(line)){
String[] columns = line.split(",");
String[] families = Constants.FAMILIES;
String rowKey = "201307310800"+columns[0];
for(int i = 0;i < columns.length;i++){
String family = families[i];
String qualifier = "";
String value = columns[i];
put = getPut(rowKey,family,qualifier,value);
puts.add(put);
}
}
return puts;
}
/**
* 组装一个Put
* @param rowKey
* @param family
* @param qualifier
* @param value
* @return
*/
private static Put getPut(String rowKey, String family, String qualifier,
String value) {
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
return put;
}
/**
* 查询出一条数据
* @param tableName
* @param rowKey
*/
private static void getRecord(String tableName, String rowKey) {
Configuration cfg = HbaseUtils.getCfg();
try {
HTable htable = new HTable(cfg,tableName);
Get get = new Get(Bytes.toBytes(rowKey));
Result rs = htable.get(get);
for(KeyValue kv : rs.raw()){
System.out.print(new String(kv.getRow())+" *** ");
System.out.print(new String(kv.getFamily())+" *** ");
System.out.print(new String(kv.getQualifier())+" *** ");
System.out.print(new String(kv.getValue()));
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除一张表
* @param tableName
*/
private static void dropTable(String tableName) {
Configuration cfg = HbaseUtils.getCfg();
try {
HBaseAdmin admin = new HBaseAdmin(cfg);
admin.disableTable(tableName);
admin.deleteTable(tableName);
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("tableName: "+tableName+" drop over!");
}
}
/**
* 删除一行
* @param tableName
* @param rowKey
*/
private static void deleteRecord(String tableName, String rowKey) {
Configuration cfg = HbaseUtils.getCfg();
try {
HTable htable = new HTable(cfg,tableName);
Delete del = new Delete(Bytes.toBytes(rowKey));
htable.delete(del);
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("rowKey: "+rowKey+" delete over!");
}
}
/**
* 存储一列
* @param tableName
* @param rowKey
* @param family
* @param qualifier
* @param value
*/
private static void writeRecord(String tableName,String rowKey,String family,String qualifier,String value) {
Configuration cfg = HbaseUtils.getCfg();
try {
HTable htable = new HTable(cfg,tableName);
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
htable.put(put);
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("family: "+family+" put over!");
}
}
/**
* 创建一张表
* @param tableName
* @param families
*/
private static void createTable(String tableName,String[] families) {
HBaseAdmin admin = null;
try {
Configuration cfg = HbaseUtils.getCfg();
System.out.println(cfg);
admin = new HBaseAdmin(cfg);
if(admin.tableExists(tableName)){
System.out.println("表:"+tableName+" 已经存在!");
}else{
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
for(String column : families){
tableDesc.addFamily(new HColumnDescriptor(column));
}
admin.createTable(tableDesc);
}
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("over!");
}
}
}
JAVA操作Hbase基础例子的更多相关文章
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Java操作hbase总结
用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...
- java操作Hbase实例
所用HBase版本为1.1.2,hadoop版本为2.4 /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.u ...
- 错误: 找不到或无法加载主类 java操作hbase出错
用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...
- Java 操作 HBase 教程
Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...
- HBase(2) Java 操作 HBase 教程
目录 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 FAQ 参考文档 一.简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概 ...
- HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html
HBase提示已创建表,但是list查询时,却显示表不存在. https://blog.csdn.net/liu16659/article/details/80216085 下载网址 http://a ...
- 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
随机推荐
- Ibatis入门基本语法(转) good
Ibatis入门基本语法 一个项目中在写ibatis中的sql语句时,where user_id in (#user_id_list# ), 运行时总是不行,后来上网查了查,才知道这里不该用#,而应该 ...
- C功底挑战Java菜鸟入门概念干货(二)
(接上篇博文:C功底挑战Java菜鸟入门概念干货(一)) 一.Java面向对象程序设计-类的基本形式 1.“类”是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用以表达对真实世界的一种抽象概 ...
- 最长回文(Manacher)
HOT~ 杭电2015级新生如何加入ACM集训队? 最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 网页压缩gzip的问题及说明教程
关于网页压缩gzip的问题及说明教程 最近比较多人反应gzip的问题 在wdcp的后台里已经有gzip功能的选项,也就是说,只要在这里开启了,就已支持 但从最近的问题中发现,基本上都是使用一些在线检测 ...
- iOS --- [持续更新中] iOS移动开发中的优质资源
在我们做iOS APP的开发过程中, 须要非常多设计, 产品, 技术, 运营等方面的技巧和资源. 现将其整理汇总, 本文会一直持续更新. 敬请关注. 设计 Dribbble Dribbble是一个面向 ...
- ASP.NET 操作配置文件
1.配置文件的各种操作 http://www.cnblogs.com/shimeng3344518/archive/2007/04/23/723999.html 2. http://www.jb51. ...
- Oracle定时器调用存储过程
1. 创建表 create table job_table(run_time date); 2. 创建存储过程 create or replace procedure job_proc is begi ...
- 获得view所在的控制器
- (UIViewController*)getViewController{ for (UIView* next = [self superview]; next; next = next.supe ...
- linux串口编程(c)
//linux c: 串口设置//串口操作无非以下几个://1 打开 //2 设置串口属性//3 read write //struct termios能够 ...
- POJ 1256.Anagram
2015-06-04 问题简述: 输出一串字符的全排列,顺序不同于一般的字母序,而是 A<a<B<b......<Z<z.所以应该重写一个比较函数. 原题链接:http: ...