1.连接Hbase,使用单例模式。修改自己的主机名
package oracle.demo.oow.bd.util.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; public class HbaseConn { private Configuration configuration = null; private Connection connection = null; private static class SingletonHolder{ private static final HbaseConn INSTANCE = new HbaseConn(); } private HbaseConn(){ try { configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "hadoop"); configuration.set("hbase.rootdir", "hdfs://hadoop:9000/hbase"); connection = ConnectionFactory.createConnection(configuration); } catch (Exception e) { e.printStackTrace(); } } public static final Connection getConn() { return SingletonHolder.INSTANCE.connection; } public static void main(String[] args) { System.out.println(HbaseConn.getConn()); } }
2.封装一些工具类
(1)计数器 参数:表名 行键 列族 列 增加的数字
public long incr(String tableName, String rowKey, String family, String column, long range) { long count = 0l; try { Table table = HbaseConn.getConn().getTable(TableName.valueOf(tableName)); count = table.incrementColumnValue(Bytes.toBytes(rowKey), Bytes.toBytes(family), Bytes.toBytes(column), range); table.close(); } catch (IOException e) { e.printStackTrace(); } return count; }
(2)插入或修改一条数据,针对列族中的一列 long型 其他类型也可以 修改雷清即可
public void put(String tableName, String rowKey, String family, String column, long value) { try { Table table = HbaseConn.getConn().getTable(TableName.valueOf(tableName)); Put put = new Put(Bytes.toBytes(rowKey)); put.addColumn(Bytes.toBytes(family), Bytes.toBytes(column), Bytes.toBytes(value)); table.put(put); table.close(); } catch (IOException e) { e.printStackTrace(); } }
(3)查询数据 根据行键查询 这里举例 行键为long型
public Result getResultByRow(String tableName, long rowKey, String family) { Result result = null; try { Table table = HbaseConn.getConn().getTable(TableName.valueOf(tableName)); Get get = new Get(Bytes.toBytes(rowKey)); if(family!=null) { get.addFamily(Bytes.toBytes(family)); } result = table.get(get); table.close(); } catch (IOException e) { e.printStackTrace(); } return result; } 返回值是一个Result,get方法 可以添加列族 行键
(4)扫描表 使用scan方法
public ResultScanner getResultScannerByFilter(String tableName, Filter filter, String family) { ResultScanner resultScanner = null; try { Table table = HbaseConn.getConn().getTable(TableName.valueOf(tableName)); Scan scan = new Scan(); if (filter != null) { scan.setFilter(filter); } if(family != null) { scan.addFamily(Bytes.toBytes(family)); } resultScanner = table.getScanner(scan); table.close(); } catch (IOException e) { e.printStackTrace(); } return resultScanner; } 返回值是一个ResultScanner,我们可以闯入一个过滤器来进行扫描。
(5)删除数据
public void deleteDataByRow(String tableName, String rowKey) { try { Table table = HbaseConn.getConn().getTable(TableName.valueOf(tableName)); Delete deleteAll = new Delete(Bytes.toBytes(rowKey)); table.delete(deleteAll); table.close(); } catch (IOException e) { e.printStackTrace(); } }
转载请注明原文地址: https://www.6miu.com/read-34399.html