hbase开发:使用java操作hbase_结合实例论述总结的特点有哪些

hbase开发:使用java操作hbase_结合实例论述总结的特点有哪些HBase总结-Java API 与HBase交互实例

大家好,又见面了,我是你们的朋友全栈君。

package com.unilife.utils.persistence;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
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.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
public class Hbase {  
// 声明静态配置  
static Configuration conf = null;  
static {  
conf = HBaseConfiguration.create();  
conf.set("hbase.zookeeper.quorum", "master");  
}  
/*  
* 创建表  
*   
* @tableName 表名  
*   
* @family 列族列表  
*/  
public static void creatTable(String tableName, String[] family)  
throws Exception {  
HBaseAdmin admin = new HBaseAdmin(conf);  
HTableDescriptor desc = new HTableDescriptor(tableName);  
for (int i = 0; i < family.length; i++) {  
desc.addFamily(new HColumnDescriptor(family[i]));  
}  
if (admin.tableExists(tableName)) {  
System.out.println("table Exists!");  
System.exit(0);  
} else {  
admin.createTable(desc);  
System.out.println("create table Success!");  
}  
}  
/*  
* 为表添加数据(适合知道有多少列族的固定表)  
*   
* @rowKey rowKey  
*   
* @tableName 表名  
*   
* @column1 第一个列族列表  
*   
* @value1 第一个列的值的列表  
*   
* @column2 第二个列族列表  
*   
* @value2 第二个列的值的列表  
*/  
public static void addData(String rowKey, String tableName,  
String[] column1, String[] value1, String[] column2, String[] value2)  
throws IOException {  
Put put = new Put(Bytes.toBytes(rowKey));// 设置rowkey  
HTable table = new HTable(conf, Bytes.toBytes(tableName));// HTabel负责跟记录相关的操作如增删改查等//  
// 获取表  
HColumnDescriptor[] columnFamilies = table.getTableDescriptor() // 获取所有的列族  
.getColumnFamilies();  
for (int i = 0; i < columnFamilies.length; i++) {  
String familyName = columnFamilies[i].getNameAsString(); // 获取列族名  
if (familyName.equals("article")) { // article列族put数据  
for (int j = 0; j < column1.length; j++) {  
put.add(Bytes.toBytes(familyName),  
Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j]));  
}  
}  
if (familyName.equals("author")) { // author列族put数据  
for (int j = 0; j < column2.length; j++) {  
put.add(Bytes.toBytes(familyName),  
Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j]));  
}  
}  
}  
table.put(put);  
System.out.println("add data Success!");  
}  
/*  
* 根据rwokey查询  
*   
* @rowKey rowKey  
*   
* @tableName 表名  
*/  
public static Result getResult(String tableName, String rowKey)  
throws IOException {  
Get get = new Get(Bytes.toBytes(rowKey));  
HTable table = new HTable(conf, Bytes.toBytes(tableName));// 获取表  
Result result = table.get(get);  
for (KeyValue kv : result.list()) {  
System.out.println("family:" + Bytes.toString(kv.getFamily()));  
System.out  
.println("qualifier:" + Bytes.toString(kv.getQualifier()));  
System.out.println("value:" + Bytes.toString(kv.getValue()));  
System.out.println("Timestamp:" + kv.getTimestamp());  
System.out.println("-------------------------------------------");  
}  
return result;  
}  
/*  
* 遍历查询hbase表  
*   
* @tableName 表名  
*/  
public static void getResultScann(String tableName) throws IOException {  
Scan scan = new Scan();  
ResultScanner rs = null;  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
try {  
rs = table.getScanner(scan);  
for (Result r : rs) {  
for (KeyValue kv : r.list()) {  
System.out.println("row:" + Bytes.toString(kv.getRow()));  
System.out.println("family:"  
+ Bytes.toString(kv.getFamily()));  
System.out.println("qualifier:"  
+ Bytes.toString(kv.getQualifier()));  
System.out  
.println("value:" + Bytes.toString(kv.getValue()));  
System.out.println("timestamp:" + kv.getTimestamp());  
System.out  
.println("-------------------------------------------");  
}  
}  
} finally {  
rs.close();  
}  
}  
/*  
* 遍历查询hbase表  
*   
* @tableName 表名  
*/  
public static void getResultScann(String tableName, String start_rowkey,  
String stop_rowkey) throws IOException {  
Scan scan = new Scan();  
scan.setStartRow(Bytes.toBytes(start_rowkey));  
scan.setStopRow(Bytes.toBytes(stop_rowkey));  
ResultScanner rs = null;  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
try {  
rs = table.getScanner(scan);  
for (Result r : rs) {  
for (KeyValue kv : r.list()) {  
System.out.println("row:" + Bytes.toString(kv.getRow()));  
System.out.println("family:"  
+ Bytes.toString(kv.getFamily()));  
System.out.println("qualifier:"  
+ Bytes.toString(kv.getQualifier()));  
System.out  
.println("value:" + Bytes.toString(kv.getValue()));  
System.out.println("timestamp:" + kv.getTimestamp());  
System.out  
.println("-------------------------------------------");  
}  
}  
} finally {  
rs.close();  
}  
}  
/*  
* 查询表中的某一列  
*   
* @tableName 表名  
*   
* @rowKey rowKey  
*/  
public static void getResultByColumn(String tableName, String rowKey,  
String familyName, String columnName) throws IOException {  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
Get get = new Get(Bytes.toBytes(rowKey));  
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); // 获取指定列族和列修饰符对应的列  
Result result = table.get(get);  
for (KeyValue kv : result.list()) {  
System.out.println("family:" + Bytes.toString(kv.getFamily()));  
System.out  
.println("qualifier:" + Bytes.toString(kv.getQualifier()));  
System.out.println("value:" + Bytes.toString(kv.getValue()));  
System.out.println("Timestamp:" + kv.getTimestamp());  
System.out.println("-------------------------------------------");  
}  
}  
/*  
* 更新表中的某一列  
*   
* @tableName 表名  
*   
* @rowKey rowKey  
*   
* @familyName 列族名  
*   
* @columnName 列名  
*   
* @value 更新后的值  
*/  
public static void updateTable(String tableName, String rowKey,  
String familyName, String columnName, String value)  
throws IOException {  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
Put put = new Put(Bytes.toBytes(rowKey));  
put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName),  
Bytes.toBytes(value));  
table.put(put);  
System.out.println("update table Success!");  
}  
/*  
* 查询某列数据的多个版本  
*   
* @tableName 表名  
*   
* @rowKey rowKey  
*   
* @familyName 列族名  
*   
* @columnName 列名  
*/  
public static void getResultByVersion(String tableName, String rowKey,  
String familyName, String columnName) throws IOException {  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
Get get = new Get(Bytes.toBytes(rowKey));  
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));  
get.setMaxVersions(5);  
Result result = table.get(get);  
for (KeyValue kv : result.list()) {  
System.out.println("family:" + Bytes.toString(kv.getFamily()));  
System.out  
.println("qualifier:" + Bytes.toString(kv.getQualifier()));  
System.out.println("value:" + Bytes.toString(kv.getValue()));  
System.out.println("Timestamp:" + kv.getTimestamp());  
System.out.println("-------------------------------------------");  
}  
/*  
* List< > results = table.get(get).list(); Iterator< > it =  
* results.iterator(); while (it.hasNext()) {  
* System.out.println(it.next().toString()); }  
*/  
}  
/*  
* 删除指定的列  
*   
* @tableName 表名  
*   
* @rowKey rowKey  
*   
* @familyName 列族名  
*   
* @columnName 列名  
*/  
public static void deleteColumn(String tableName, String rowKey,  
String falilyName, String columnName) throws IOException {  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
Delete deleteColumn = new Delete(Bytes.toBytes(rowKey));  
deleteColumn.deleteColumns(Bytes.toBytes(falilyName),  
Bytes.toBytes(columnName));  
table.delete(deleteColumn);  
System.out.println(falilyName + ":" + columnName + "is deleted!");  
}  
/*  
* 删除指定的列  
*   
* @tableName 表名  
*   
* @rowKey rowKey  
*/  
public static void deleteAllColumn(String tableName, String rowKey)  
throws IOException {  
HTable table = new HTable(conf, Bytes.toBytes(tableName));  
Delete deleteAll = new Delete(Bytes.toBytes(rowKey));  
table.delete(deleteAll);  
System.out.println("all columns are deleted!");  
}  
/*  
* 删除表  
*   
* @tableName 表名  
*/  
public static void deleteTable(String tableName) throws IOException {  
HBaseAdmin admin = new HBaseAdmin(conf);  
admin.disableTable(tableName);  
admin.deleteTable(tableName);  
System.out.println(tableName + "is deleted!");  
}  
public static void main(String[] args) throws Exception {  
// 创建表  
String tableName = "blog2";  
String[] family = { "article", "author" };  
creatTable(tableName, family);  
// 为表添加数据  
String[] column1 = { "title", "content", "tag" };  
String[] value1 = {  
"Head First HBase",  
"HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data.",  
"Hadoop,HBase,NoSQL" };  
String[] column2 = { "name", "nickname" };  
String[] value2 = { "nicholas", "lee" };  
addData("rowkey1", "blog2", column1, value1, column2, value2);  
addData("rowkey2", "blog2", column1, value1, column2, value2);  
addData("rowkey3", "blog2", column1, value1, column2, value2);  
// 遍历查询  
getResultScann("blog2", "rowkey4", "rowkey5");  
// 根据row key范围遍历查询  
getResultScann("blog2", "rowkey4", "rowkey5");  
// 查询  
getResult("blog2", "rowkey1");  
// 查询某一列的值  
getResultByColumn("blog2", "rowkey1", "author", "name");  
// 更新列  
updateTable("blog2", "rowkey1", "author", "name", "bin");  
// 查询某一列的值  
getResultByColumn("blog2", "rowkey1", "author", "name");  
// 查询某列的多版本  
getResultByVersion("blog2", "rowkey1", "author", "name");  
// 删除一列  
deleteColumn("blog2", "rowkey1", "author", "nickname");  
// 删除所有列  
deleteAllColumn("blog2", "rowkey1");  
// 删除表  
deleteTable("blog2");  
}  
}  

 

转载于:https://my.oschina.net/u/1458864/blog/2236865

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107266.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • JavaScript(1)高阶函数filter、map、reduce

    JavaScript(1)高阶函数filter、map、reduce前言需求:有这样一个数组[10,20,110,200,60,30,40]1.筛选出数组中小于100的元素2.将筛选出的每个元素的值x23.完成第2步之后,将数组中的所有元素加起来

  • voliate Synchronized Lock

    voliate Synchronized Lock参考文章:https://blog.csdn.net/huyiju/article/details/97126274一、voliate相关1:java内存模型1.1:计算机的内存模型在计算机的内存模型中cpu和内存之间的速度存在数量级所以引入了高速缓存,告诉缓存会导致到底以哪个处理器的缓存为主,同步到主内存,这个时候有有了缓存一致性协议,来保证缓存一致性。指令重排:例如一下五行代码,前四行的在计算机cpu的执行顺序不一定是12345,也可以是13245或者34125,但是第五步的顺序不会变,这种

  • caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)「建议收藏」

    caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)「建议收藏」caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)

  • 谷粒商城官网_尚硅谷谷粒商城电商项目

    谷粒商城官网_尚硅谷谷粒商城电商项目后端编写、前端展示、服务注册、配置网关、503问题、跨域、解决跨域、服务注册配置网关、删除数据、后端接口、逻辑删除

  • Java中的数据类型详解——boolean类型

    Java中的数据类型详解——boolean类型BooleanTest01.java/* 1、在java语言中boolean类型只有两个值,没有其他值: true和false。 不像c或者c++,c语言中1和0也可以表示布尔类型。 2、boolean类型在实际开发中使用在哪里呢? 使用在逻辑判断当中,通常放在条件的位置上(充当条件)。*/publicclassBooleanTest01{ publicstaticvoidmain(String[]args){ //错误:不兼容的类型:int无法转换为boole

  • 使用()命令来启用FTP服务_windows播放ftp

    使用()命令来启用FTP服务_windows播放ftp首先是win10控制面板–》程序–》启用或关闭windows功能找到Internetinformationservice(信息服务),并选中“FTP服务”、“FTP扩展性”和“IIS管理控制台”前的复选框,点击“确定”在C盘创建一个FTP共享文件夹,名字自定义接下来是控制面板–》系统和安全–》管理工具–》InternetInformationServices(IIS)管理器如下图所示,鼠标右键红框地方添加FTP站点站点名称自定义,路径选择先前创建的文件夹,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号