如何使用Java API操作Hbase基于096新的api.docx
- 文档编号:7219392
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:11
- 大小:16.45KB
如何使用Java API操作Hbase基于096新的api.docx
《如何使用Java API操作Hbase基于096新的api.docx》由会员分享,可在线阅读,更多相关《如何使用Java API操作Hbase基于096新的api.docx(11页珍藏版)》请在冰豆网上搜索。
如何使用JavaAPI操作Hbase基于096新的api
如何使用JavaAPI操作Hbase(基于0.96新的api)
写了个Hbase新的api的增删改查的工具类,以供参考,直接拷贝代码就能用,散仙觉得基础的功能,都有了,代码如下:
packagecom.dhgate.hbase.test;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.hbase.Cell;
importorg.apache.hadoop.hbase.CellUtil;
importorg.apache.hadoop.hbase.HBaseConfiguration;
importorg.apache.hadoop.hbase.HColumnDescriptor;
importorg.apache.hadoop.hbase.HTableDescriptor;
importorg.apache.hadoop.hbase.TableName;
importorg.apache.hadoop.hbase.client.Delete;
importorg.apache.hadoop.hbase.client.Get;
importorg.apache.hadoop.hbase.client.HBaseAdmin;
importorg.apache.hadoop.hbase.client.HTable;
importorg.apache.hadoop.hbase.client.Put;
importorg.apache.hadoop.hbase.client.Result;
importorg.apache.hadoop.hbase.client.ResultScanner;
importorg.apache.hadoop.hbase.client.Scan;
importorg.apache.hadoop.hbase.filter.PageFilter;
importorg.apache.hadoop.hbase.filter.PrefixFilter;
importorg.apache.hadoop.hbase.util.Bytes;
/**
*基于新的API
*Hbase0.96版本
*写的工具类
*
*@authorqindongliang
*大数据技术交流群:
376932160
*
***/
publicclassHbaseCommons{
staticConfigurationconf=HBaseConfiguration.create();
staticStringtableName="";
publicstaticvoidmain(String[]args)throwsException{
//StringtableName="test";
//createTable(tableName,null);
}
/**
*批量添加数据
*@paramtableName标名字
*@paramrowsrowkey行健的集合
*本方法仅作示例,其他的内容需要看自己义务改变
*
***/
publicstaticvoidinsertList(StringtableName,Stringrows[])throwsException{
HTabletable=newHTable(conf,tableName);
List
for(Stringr:
rows){
Putp=newPut(Bytes.toBytes(r));
//此处示例添加其他信息
//p.add(Bytes.toBytes("family"),Bytes.toBytes("column"),1000,Bytes.toBytes("value"));
list.add(p);
}
table.put(list);//批量添加
table.close();//释放资源
}
/**
*创建一个表
*@paramtableName表名字
*@paramcolumnFamilys列簇
*
***/
publicstaticvoidcreateTable(StringtableName,String[]columnFamilys)throwsException{
//admin对象
HBaseAdminadmin=newHBaseAdmin(conf);
if(admin.tableExists(tableName)){
System.out.println("此表,已存在!
");
}else{
//旧的写法
//HTableDescriptortableDesc=newHTableDescriptor(tableName);
//新的api
HTableDescriptortableDesc=newHTableDescriptor(TableName.valueOf(tableName));
for(StringcolumnFamily:
columnFamilys){
tableDesc.addFamily(newHColumnDescriptor(columnFamily));
}
admin.createTable(tableDesc);
System.out.println("建表成功!
");
}
admin.close();//关闭释放资源
}
/**
*删除一个表
*@paramtableName删除的表名
**/
publicstaticvoiddeleteTable(StringtableName)throwsException{
HBaseAdminadmin=newHBaseAdmin(conf);
if(admin.tableExists(tableName)){
admin.disableTable(tableName);//禁用表
admin.deleteTable(tableName);//删除表
System.out.println("删除表成功!
");
}else{
System.out.println("删除的表不存在!
");
}
admin.close();
}
/**
*插入一条数据
*@paramtableName表明
*@paramcolumnFamily列簇
*@paramcolumn列
*@paramvalue值
*
****/
publicstaticvoidinsertOneRow(StringtableName,Stringrowkey,StringcolumnFamily,Stringcolumn,Stringvalue)throwsException{
HTabletable=newHTable(conf,tableName);
Putput=newPut(Bytes.toBytes(rowkey));
put.add(Bytes.toBytes(columnFamily),Bytes.toBytes(column),Bytes.toBytes(value));
table.put(put);//放入表
table.close();//释放资源
}
/**
*删除一条数据
*@paramtableName表名
*@paramrowrowkey行键
*
**/
publicstaticvoiddeleteOneRow(StringtableName,Stringrow)throwsException{
HTabletable=newHTable(conf,tableName);
Deletedelete=newDelete(Bytes.toBytes(row));
table.delete(delete);
table.close();
}
/**
*删除多条数据
*@paramtableName表名
*@paramrows行健集合
*
***/
publicstaticvoiddeleteList(StringtableName,Stringrows[])throwsException{
HTabletable=newHTable(conf,tableName);
List
for(Stringrow:
rows){
Deletedel=newDelete(Bytes.toBytes(row));
list.add(del);
}
table.delete(list);
table.close();//释放资源
}
/**
*获取一条数据,根据rowkey
*@paramtableName表名
*@paramrow行健
*
***/
publicstaticvoidgetOneRow(StringtableName,Stringrow)throwsException{
HTabletable=newHTable(conf,tableName);
Getget=newGet(Bytes.toBytes(row));
Resultresult=table.get(get);
printRecoder(result);//打印记录
table.close();//释放资源
}
/**
*查看某个表下的所有数据
*
*@paramtableName表名
**/
publicstaticvoidshowAll(StringtableName)throwsException{
HTabletable=newHTable(conf,tableName);
Scanscan=newScan();
ResultScannerrs=table.getScanner(scan);
for(Resultr:
rs){
printRecoder(r);//打印记录
}
table.close();//释放资源
}
/**
*查看某个表下的所有数据
*
*@paramtableName表名
*@paramrowKey行健
**/
publicstaticvoidScanPrefixByRowKey(StringtableName,StringrowKey)throwsException{
HTabletable=newHTable(conf,tableName);
Scanscan=newScan();
scan.setFilter(newPrefixFilter(Bytes.toBytes(rowKey)));
ResultScannerrs=table.getScanner(scan);
for(Resultr:
rs){
printRecoder(r);//打印记录
}
table.close();//释放资源
}
/**
*查看某个表下的所有数据
*
*@paramtableName表名
*@paramrowKey行健扫描
*@paramlimit限制返回数据量
**/
publicstaticvoidScanPrefixByRowKeyAndLimit(StringtableName,StringrowKey,longlimit)throwsException{
HTabletable=newHTable(conf,tableName);
Scanscan=newScan();
scan.setFilter(newPrefixFilter(Bytes.toBytes(rowKey)));
scan.setFilter(newPageFilter(limit));
ResultScannerrs=table.getScanner(scan);
for(Resultr:
rs){
printRecoder(r);//打印记录
}
table.close();//释放资源
}
/**
*根据rowkey扫描一段范围
*@paramtableName表名
*@paramstartRow开始的行健
*@paramstopRow结束的行健
***/
publicvoidscanByStartAndStopRow(StringtableName,StringstartRow,StringstopRow)throwsException{
HTabletable=newHTable(conf,tableName);
Scanscan=newScan();
scan.setStartRow(Bytes.toBytes(startRow));
scan.setStopRow(Bytes.toBytes(stopRow));
ResultScannerrs=table.getScanner(scan);
for(Resultr:
rs){
printRecoder(r);
}
table.close();//释放资源
}
/**
*扫描整个表里面具体的某个字段的值
*@paramtableName表名
*@paramcolumnFalimy列簇
*@paramcolumn列
***/
publicstaticvoidgetValueDetail(StringtableName,StringcolumnFalimy,Stringcolumn)throwsException{
HTabletable=newHTable(conf,tableName);
Scanscan=newScan();
ResultScannerrs=table.getScanner(scan);
for(Resultr:
rs){
System.out.println("值:
"+newString(r.getValue(Bytes.toBytes(columnFalimy),Bytes.toBytes(column))));
}
table.close();//释放资源
}
/**
*打印一条记录的详情
*
**/
publicstaticvoidprintRecoder(Resultresult)throwsException{
for(Cellcell:
result.rawCells()){
System.out.print("行健:
"+newString(CellUtil.cloneRow(cell)));
System.out.print("列簇:
"+newString(CellUtil.cloneFamily(cell)));
System.out.print("列:
"+newString(CellUtil.cloneQualifier(cell)));
System.out.print("值:
"+newString(CellUtil.cloneValue(cell)));
System.out.println("时间戳:
"+cell.getTimestamp());
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何使用Java API操作Hbase基于096新的api 如何 使用 Java API 操作 Hbase 基于 096