千家信息网

Hbase中有哪些常用的数据库操作类

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章将为大家详细讲解有关Hbase中有哪些常用的数据库操作类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。pom.xml中引用hbase-clie
千家信息网最后更新 2024年11月11日Hbase中有哪些常用的数据库操作类

这篇文章将为大家详细讲解有关Hbase中有哪些常用的数据库操作类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

pom.xml中引用hbase-client

                        org.apache.hbase                        hbase-client                        2.2.5

HBaseConn.java获取hbase链接

package com.rumenz;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;import org.apache.hadoop.hbase.client.Table;import java.io.IOException;public class HBaseConn {      private static final HBaseConn INSTANCE=new HBaseConn();      private static Configuration configuration;      private static Connection connection;      private HBaseConn(){          try{              if(configuration==null){                  configuration=HBaseConfiguration.create();                  configuration.set("hbase.zookeeper.quorum", "192.168.82.177:2181");              }          }catch (Exception e){              e.printStackTrace();          }      }      private Connection getConnection(){          if(connection==null||connection.isClosed()){               try{                   connection=ConnectionFactory.createConnection(configuration);               }catch(Exception e){                   e.printStackTrace();               }          }          return connection;      }      public static Connection getHbaseConn(){          return INSTANCE.getConnection();      }      public static Table getTable(String table) throws IOException {          return INSTANCE.getConnection().getTable(TableName.valueOf(table));      }      public static void closeConn(){          if(connection!=null){             try{                 connection.close();             }catch(Exception e){                 e.printStackTrace();             }          }      }}

HBaseUtil.java数据库增删改查操作

package com.rumenz;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.*;import org.apache.hadoop.hbase.filter.FilterList;import org.apache.hadoop.hbase.util.Bytes;import java.io.IOException;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class HBaseUtil {    /**     * 创建一个表     * @param tableName 表名     * @param cf 列族名     * @return     * @throws IOException     */    public static boolean createTable(String tableName,String[] cf) throws IOException {        try(HBaseAdmin admin = (HBaseAdmin) HBaseConn.getHbaseConn().getAdmin()){            if(admin.tableExists(TableName.valueOf(tableName))){                return false;            }            List res=new ArrayList<>();            Arrays.stream(cf).forEach(cff->{                res.add(ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(cff)).build());            });            TableDescriptor hTableDescriptor= TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName)).setColumnFamilies(res).build();            admin.createTable(hTableDescriptor);        }catch(Exception e){            e.printStackTrace();        }        return true;    }    /**     * 删除一个表     * @param tableName 表名     * @return     */    public static boolean deleteTable(String tableName){        try(HBaseAdmin admin= (HBaseAdmin) HBaseConn.getHbaseConn().getAdmin()){            admin.disableTable(TableName.valueOf(tableName));            admin.deleteTable(TableName.valueOf(tableName));        }catch(Exception e){            e.printStackTrace();        }        return true;    }    /**     *  插入一条数据     * @param tableName 表名     * @param rowkey    主键     * @param cfName    列族     * @param qualifier 列名     * @param data   数据     * @return     */    public static boolean putRow(String tableName,String rowkey,String cfName,String qualifier,String data){        try(Table table=  HBaseConn.getTable(tableName)){            Put put=new Put(Bytes.toBytes(rowkey));            put.addColumn(Bytes.toBytes(cfName), Bytes.toBytes(qualifier), Bytes.toBytes(data));            table.put(put);        }catch (Exception e){            e.printStackTrace();        }        return true;    }    /**     * 批量添加数据     * @param tableName 表名     * @param puts      数据列表     * @return     */    public static boolean putRows(String tableName,List puts){        try(Table table=  HBaseConn.getTable(tableName)){            table.put(puts);        }catch (Exception e){            e.printStackTrace();        }        return true;    }    /**     * 通过rowkey查询数据     * @param tableName 表名     * @param rowkey    rowkey     * @return     * @throws IOException     */    public static Result getRow(String tableName,String rowkey) throws IOException {       try(Table table=HBaseConn.getTable(tableName)){           Get get=new Get(Bytes.toBytes(rowkey));           return table.get(get);       }catch (Exception e){           e.printStackTrace();       }        return null;    }    /**     * 通过scan 查询数据     * @param tableName 表名     * @param startRow  开始的row     * @param endRow    结束的row     * @return     */    public static ResultScanner getScanner(String tableName,String startRow,String endRow){        try(Table table=HBaseConn.getTable(tableName)){            Scan scan=new Scan();            scan.withStartRow(Bytes.toBytes(startRow));            scan.withStopRow(Bytes.toBytes(endRow));            scan.setCaching(1000);            return  table.getScanner(scan);        }catch (Exception e){            e.printStackTrace();        }        return null;    }    /**     * 通过过滤器查询数据     * @param tableName 表名     * @param startRow  开始     * @param endRow    结束     * @param flist     过滤器     * @return     */    public static ResultScanner getScanner(String tableName, String startRow, String endRow, FilterList flist){        try(Table table=HBaseConn.getTable(tableName)){            Scan scan=new Scan();            scan.withStartRow(Bytes.toBytes(startRow));            scan.withStopRow(Bytes.toBytes(endRow));            scan.setFilter(flist);            scan.setCaching(1000);            return  table.getScanner(scan);        }catch (Exception e){            e.printStackTrace();        }        return null;    }    /**     * 通过rowkey删除数据     * @param tableName 表名     * @param rowKey    rowkey     * @return     */    public static boolean deleteRow(String tableName,String rowKey){       try(Table table=HBaseConn.getTable(tableName)){           Delete delete=new Delete(Bytes.toBytes(rowKey));           table.delete(delete);       }catch (Exception e){           e.printStackTrace();       }       return true;    }    /**     * 删除列族     * @param tableName 表名     * @param cfName    列族     * @return     */    public static boolean deleteColumnFamily(String tableName,String cfName){        try(HBaseAdmin admin= (HBaseAdmin) HBaseConn.getHbaseConn().getAdmin()){           admin.deleteColumnFamily(TableName.valueOf(tableName),Bytes.toBytes(cfName));        }catch (Exception e){            e.printStackTrace();        }        return true;    }    /**     * 删除列名     * @param tableName  表名     * @param rowKey     rowkey     * @param cfName     列族     * @param qualifier  列名     * @return     */    public static boolean deleteQualifier(String tableName,String rowKey,String cfName,String qualifier){        try(Table table=HBaseConn.getTable(tableName)){            Delete delete=new Delete(Bytes.toBytes(rowKey));            delete.addColumn(Bytes.toBytes(cfName), Bytes.toBytes(qualifier));            table.delete(delete);        }catch (Exception e){            e.printStackTrace();        }        return true;    }}

关于Hbase中有哪些常用的数据库操作类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0