Hbase-Java API操作
来源:互联网 发布:galgame认证回避软件 编辑:程序博客网 时间:2024/04/29 11:32
写了个Hbase新的api的增删改查的工具类,以供参考,直接拷贝代码就能用,散仙觉得基础的功能,都有了,代码如下:
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);//新的apiHTableDescriptor 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
- hbase java api操作
- hbase java api操作
- hbase Java Api 操作
- hbase java api操作
- Hbase-Java API操作
- Java API 操作Hbase
- Java API操作hbase
- java api操作 hbase
- java api操作hbase
- java api操作hbase
- hbase编程:通过Java api操作hbase
- Hbase Java Api 基本操作
- HBase和Java API操作
- 使用 Java API 操作 HBase
- HBase Java API使用操作例子
- 使用Java API对HBase进行操作
- 用JAVA的API操作HBASE
- HBase shell操作及Java API
- noip1996 格子位置 - 普及组 (模拟)
- Visual NMP中升级Nginx、PHP、MySQL
- 南邮 OJ 1619 纸牌
- 29个你必须知道的Linux命令
- 堆 Heap <实现类+测试用例>
- Hbase-Java API操作
- jMock出错java.lang.IllegalStateException: Native library for Attach API not available in this JRE的解决方
- android sudio Failure [INSTALL_FAILED_OLDER_SDK]解决方案
- CUDNN v3例程演示
- 南邮 OJ 1620 字符串
- memcached源码分析之四
- question2answer优化
- 搜索Maven仓库的若干方法
- Android之drawable state各个属性详解