HBase java客户端


package com.dhgate.hbase.test;

import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
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.filter.PageFilter;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.util.Bytes;

/** * 基于新的API * Hbase0.96版本 * 写的工具类 * * @author qindongliang * 大数据技术交流群: 376932160 * * **/
public class HbaseCommons {


static Configuration conf=HBaseConfiguration.create();
static String tableName= "";




public static void main(String[] args) throws Exception {

//String tableName="test";
//createTable(tableName, null);

}


/** * 批量添加数据 * @param tableName 标名字 * @param rows rowkey行健的集合 * 本方法仅作示例,其他的内容需要看自己义务改变 * * **/
public static void insertList(String tableName,String rows[]) throws Exception{
HTable table= new HTable(conf, tableName);
List<Put> list= new ArrayList<Put>();
for(String r:rows){
Put p= new Put(Bytes.toBytes(r));
   //此处示例添加其他信息
//p.add(Bytes.toBytes("family"),Bytes.toBytes("column"), 1000, Bytes.toBytes("value"));
list.add(p);
}
table.put(list); //批量添加
table.close(); //释放资源
}

/** * 创建一个表 * @param tableName 表名字 * @param columnFamilys 列簇 * * **/
public static void createTable(String tableName,String[] columnFamilys) throws Exception{
//admin 对象
HBaseAdmin admin= new HBaseAdmin(conf);
if(admin.tableExists(tableName)){
System.out.println( "此表,已存在!");
} else{
//旧的写法
//HTableDescriptor tableDesc=new HTableDescriptor(tableName);
//新的api
HTableDescriptor tableDesc= new HTableDescriptor(TableName.valueOf(tableName));

for(String columnFamily:columnFamilys){
tableDesc.addFamily( new HColumnDescriptor(columnFamily));
}

admin.createTable(tableDesc);
System.out.println( "建表成功!");

}
admin.close(); //关闭释放资源

}

/** * 删除一个表 * @param tableName 删除的表名 * */
public static void deleteTable(String tableName) throws Exception{
HBaseAdmin admin= new HBaseAdmin(conf);
if(admin.tableExists(tableName)){
admin.disableTable(tableName); //禁用表
admin.deleteTable(tableName); //删除表
System.out.println( "删除表成功!");
} else{
System.out.println( "删除的表不存在!");
}
admin.close();
}

/** * 插入一条数据 * @param tableName 表明 * @param columnFamily 列簇 * @param column 列 * @param value 值 * * ***/
public static void insertOneRow(String tableName,String rowkey,String columnFamily,String column,String value) throws Exception{

HTable table= new HTable(conf, tableName);
Put put= new Put(Bytes.toBytes(rowkey));
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
table.put(put); //放入表
table.close(); //释放资源

}

/** * 删除一条数据 * @param tableName 表名 * @param row rowkey行键 * * */
public static void deleteOneRow(String tableName,String row) throws Exception{

HTable table= new HTable(conf, tableName);
Delete delete= new Delete(Bytes.toBytes(row));
table.delete(delete);
table.close();
}


/** * 删除多条数据 * @param tableName 表名 * @param rows 行健集合 * * **/
public static void deleteList(String tableName,String rows[]) throws Exception{
HTable table= new HTable(conf, tableName);
List<Delete> list= new ArrayList<Delete>();
for(String row:rows){
Delete del= new Delete(Bytes.toBytes(row));
list.add(del);
}
table.delete(list);
table.close(); //释放资源

}


/** * 获取一条数据,根据rowkey * @param tableName 表名 * @param row 行健 * * **/
public static void getOneRow(String tableName,String row) throws Exception{
HTable table= new HTable(conf, tableName);
Get get= new Get(Bytes.toBytes(row));
Result result=table.get(get);
printRecoder(result); //打印记录
table.close(); //释放资源
}

/** * 查看某个表下的所有数据 * * @param tableName 表名 * */
public static void showAll(String tableName) throws Exception{
HTable table= new HTable(conf, tableName);
Scan scan= new Scan();
ResultScanner rs=table.getScanner(scan);
for(Result r:rs){
printRecoder(r); //打印记录
}
table.close(); //释放资源
}


/** * 查看某个表下的所有数据 * * @param tableName 表名 * @param rowKey 行健 * */
public static void ScanPrefixByRowKey(String tableName,String rowKey) throws Exception{
HTable table= new HTable(conf, tableName);
Scan scan= new Scan();
scan.setFilter( new PrefixFilter(Bytes.toBytes(rowKey)));
ResultScanner rs=table.getScanner(scan);
for(Result r:rs){
printRecoder(r); //打印记录
}
table.close(); //释放资源
}


/** * 查看某个表下的所有数据 * * @param tableName 表名 * @param rowKey 行健扫描 * @param limit 限制返回数据量 * */
public static void ScanPrefixByRowKeyAndLimit(String tableName,String rowKey, long limit) throws Exception{
HTable table= new HTable(conf, tableName);
Scan scan= new Scan();
scan.setFilter( new PrefixFilter(Bytes.toBytes(rowKey)));
scan.setFilter( new  PageFilter(limit));
ResultScanner rs=table.getScanner(scan);
for(Result r:rs){
printRecoder(r); //打印记录
}
table.close(); //释放资源
}


/** * 根据rowkey扫描一段范围 * @param tableName 表名 * @param startRow 开始的行健 * @param stopRow 结束的行健 * **/
public  void scanByStartAndStopRow(String tableName,String startRow,String stopRow) throws Exception{
HTable table= new HTable(conf, tableName);
Scan scan= new Scan();
scan.setStartRow(Bytes.toBytes(startRow));
scan.setStopRow(Bytes.toBytes(stopRow));
ResultScanner rs=table.getScanner(scan);
for(Result r:rs){
printRecoder(r);
}
table.close(); //释放资源


}
/** * 扫描整个表里面具体的某个字段的值 * @param tableName 表名 * @param columnFalimy 列簇 * @param column 列 * **/
public static  void getValueDetail(String tableName,String columnFalimy,String column) throws Exception{

HTable table= new HTable(conf, tableName);
Scan scan= new Scan();
ResultScanner rs=table.getScanner(scan);
for(Result r:rs){
System.out.println( "值: " + new String(r.getValue(Bytes.toBytes(columnFalimy), Bytes.toBytes(column))));
}
table.close(); //释放资源

}
  
  
  
  
  
  
  
     /** * 打印一条记录的详情 * * */
public  static void printRecoder(Result result) throws Exception{
for(Cell cell:result.rawCells()){
System.out.print( "行健: "+ new String(CellUtil.cloneRow(cell)));
System.out.print( "列簇: "+ new String(CellUtil.cloneFamily(cell)));
System.out.print( " 列: "+ new String(CellUtil.cloneQualifier(cell)));
System.out.print( " 值: "+ new String(CellUtil.cloneValue(cell)));
System.out.println( "时间戳: "+cell.getTimestamp());
}
}



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值