HBase10.1基本操作(java代码)

public class HQuery {

private static ConnHBase connHbase=new ConnHBase();

/***************建表****************************/

public void creatTable(String TBname,String...colFamily) throws Exception {

TableName tableName = TableName.valueOf(TBname);
// 获得表名称

/*表描述器*/

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

for(String cols:colFamily){

tableDesc.addFamily(new HColumnDescriptor(cols));// 添加列族

}

/*创建管理员*/

Admin admin = connHbase.getConnect().getAdmin();

/*创建一个表*/

admin.createTable(tableDesc);

}

/***************插入和更新数据****************************/

public void createCell(String tableName,String colFamily,String rowKey,String column,String value) throws IOException {

Table table = connHbase.getConnect().getTable(TableName.valueOf(tableName));//表实例

HColumnDescriptor[] columnFamilies = table.getTableDescriptor().getColumnFamilies();//获取表中全部的列族

/*插入器*/

Put put = new Put(Bytes.toBytes(rowKey));// 设置行号,RowKey

/*遍历列族,找到匹配的列族*/

for (int i = 0; i < columnFamilies.length; i++) {

String familyName = columnFamilies[i].getNameAsString(); // 获取列族名

// 如果是指定列族

if (familyName.equals(colFamily)) {

put.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(column), Bytes.toBytes(value));// 写入

}

}

table.put(put); // 运行写入

}

/************查询单元格数据***********/

public List<Cell> getRow(String tableName,String rowKey) throws IOException {

Table table = connHbase.getConnect().getTable(TableName.valueOf(tableName));//表实例

Get get = new Get(Bytes.toBytes(rowKey));
//查询指定行

Result result = table.get(get);
//执行查询

List<Cell> listCells = result.listCells();
//指定行、全部列族的全部列

/*遍历单元格*/

/*  for (Cell cell : listCells) {

System.out.println("列  族:" + Bytes.toString(CellUtil.cloneFamily(cell)));

System.out.println("列  名:" + Bytes.toString(CellUtil.cloneQualifier(cell)));

System.out.println("列  值:" + Bytes.toString(CellUtil.cloneValue(cell)));

System.out.println("时间戳:" + cell.getTimestamp());

list.add(cell)

}*/

return  listCells;

}

/***********全表扫描************/

public List<Cell> scanTable(String tableName) throws IOException {

List<Cell> cells=null;

Table table = connHbase.getConnect().getTable(TableName.valueOf(tableName));//表实例

ResultScanner resultScanner = table.getScanner(new Scan());    //针对全表的查询器

java.util.Iterator<Result> results = resultScanner.iterator();
// 结果迭代器

while(results.hasNext()) {

Result result = results.next();

cells = result.listCells();

/*  for(Cell cell : cells) {

System.out.println("列  族:" + Bytes.toString(CellUtil.cloneFamily(cell)));

System.out.println("列  名:" + Bytes.toString(CellUtil.cloneQualifier(cell)));

System.out.println("列  值:" + Bytes.toString(CellUtil.cloneValue(cell)));

System.out.println("时间戳:" + cell.getTimestamp() + "\n------------------");

}*/

}

Scan scan =new Scan();

resultScanner.close();
// 关闭资源

return cells;

}

/*********删除单元格*********/

public void deleteCell(String colFamily ,String column ,String rowKey ,String tableName) throws IOException {

Table table = connHbase.getConnect().getTable(TableName.valueOf(tableName));//表实例

Delete del = new Delete(Bytes.toBytes(rowKey));
// 操作指定行键的删除器

del.addColumn(Bytes.toBytes(colFamily), Bytes.toBytes(column));
// 指定列族的列

table.delete(del);
// 执行删除

}

/*********删除指定行***************/

public void deleteRow(String tableName,String rowKey) throws IOException {

Table table = connHbase.getConnect().getTable(TableName.valueOf(tableName));//表实例

Delete deleterow = new Delete(Bytes.toBytes(rowKey));

table.delete(deleterow);

}

/***********删除表**************/

public void deleteTable(String tableName ) throws IOException {

Admin admin = connHbase.getConnect().getAdmin();

admin.disableTable(TableName.valueOf(tableName));  // 关闭表

admin.deleteTable(TableName.valueOf(tableName));
//删除表

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 20:12:35

HBase10.1基本操作(java代码)的相关文章

Java代码实现 增删查 + 分页——实习第四天

今天项目内容已经开始了,并且已经完成好多基本操作,今天就开始总结今天学习到的内容,和我遇到的问题,以及分析这其中的原因. 内容模块: 1:Java代码实现对数据库的增删查: 2:分页且获取页面信息: 这里针对于项目里面的Genre实体,以及对于它的操作进行举例 1 package com.music.entity; 2 3 public class Genre { 4 private int id; 5 private String name; 6 private String descript

去除挖宝报毒的问题,修改基础包的java代码,并且打包

1:去除报毒的  yl-util-countly.jar 2:注释基础包 java 的调用到yl-util-countl的代码 3:充值编译gamebase-lib.jar 1:在项目里执行  ant release 2:生成的bin\classes.jar 就是 gamebase-lib.jar 附件为所以的java代码,只有3个需要改,注释掉了调用yl-util-countl的代码

java代码分析及分析工具

java代码分析及分析工具 一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复杂不言而喻.从09年开始一直沿用到现在,中间代码经过了多少人的手,留下了多少的坑,已经记不清楚了,谁也说不清了. 代码的维护成本越来越高.代码已经急需做调整和改善.最近项目组专门设立了一个小组,利用业余时间做代码分析的工作,目标对核心代码进行分析并进行设计重构. 代码分析

Tomcat使用MyEclipse远程调试Java代码配置详解

Tomcat使用MyEclipse远程调试Java代码总结如下:在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下: 第一步.配置tomcat一.在windows系统中:打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket

HBbaseUtils(HBbase shell的java代码实现)

package com.yuhui.gd.hadoop.hbase; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.NavigableMap; import java.util.Set; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConf

hibernate配置文件、Java代码与数据库之间的转换

此贴适合初学者,技术大脑请绕道! 一.配置文件 第一步:建立项目工程,以hibernate01为例 第二步:点击项目名称-->Myeclipse--> Project Facets[Capabilities]-->Install Hibernate Facet-->yes 出现下图,选择Target runtime 选择next 包建立后next  配置文件完成 二.生成数据库表(在一的基础上完成) 创建所需要的类和配置文件 例如:    创建包 Test 点击运行 数据表建立成功

Kettle变量和自定义java代码的实例应用

1  kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得简单,下面以数据库为例说明这类配置的使用. (1)      首先要找到配置文件,不同的操作系统路径也不一样,本人用win7进行开发,配置文件的路径为"C:\Users\chenpeng\.kettle\kettle.properties",如下: (2)      配置文件中的具体配置如

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St

java代码的初始化过程研究

刚刚在ITeye上看到一篇关于java代码初始化的文章,看到代码我试着推理了下结果,虽然是大学时代学的知识了,没想到还能做对.(看来自己大学时掌握的基础还算不错,(*^__^*) 嘻嘻--)但是博主写的不够详细具体,我想在这详细谈一下java代码的具体初始化过程. 首先要清楚,初始化分为两个过程:类初始化.对象初始化. 类初始化是指类加载器将类加载到内存时,对类成员的初始化过程,也就是有static修饰的变量.对于加载完的类,它的类变量都会赋一个默认值,即使你定义时就赋值了.比如int类型就是0

java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

此题参考与其他人思路, 2个解题方式. 1. 1 /** 2 * 用java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 3 * 状态树方式解 4 * 用状态生成树的方式来做的,先把12个人按从低到高一次编号, 5 * 从(1 ; 2)出发,加入3和4的时候生成(1,3 ; 2,4)和(1,2 ; 3,4), 6 * 然后加入5和6,分别从前面的两个状态出发,可以生成5种状态,就是说6个人时有5种排列 7 * @author