zoukankan      html  css  js  c++  java
  • Hbase实例

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.HColumnDescriptor;
    import org.apache.hadoop.hbase.HTableDescriptor;
    import org.apache.hadoop.hbase.KeyValue;
    import org.apache.hadoop.hbase.ZooKeeperConnectionException;
    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.util.Bytes;
    
    public class OperateTable {
        private static Configuration configuration=null;
        static{
            configuration=HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "master");
            configuration.set("hbase.zookeeper.property.clientPort", "2181");
        }
        
        public static void createTable(String tableName,String[] columnFamilys) throws IOException {
            HBaseAdmin admin=new HBaseAdmin(configuration);
            if (admin.tableExists(tableName)) {
                System.out.println("表已存在");
                System.exit(0);
            }
            else {
                HTableDescriptor descriptor=new HTableDescriptor(tableName);
                for (String columnFamily:columnFamilys) {
                    descriptor.addFamily(new HColumnDescriptor(columnFamily));
                }
                admin.createTable(descriptor);
                System.out.println("创建表成功");
            }
        }
        
        //删除数据库表
        public static void deleteTable(String tableName) throws Exception, ZooKeeperConnectionException {
            HBaseAdmin admin=new HBaseAdmin(configuration);
            if (admin.tableExists(tableName)) {
                admin.disableTable(tableName);
                admin.deleteTable(tableName);
                System.out.println("删除表成功");
            }
            else {
                System.out.println("删除的表不存在");
                System.exit(0);
            }
        }
        
        //添加一条数据
        public static void addRow(String tableName,String row,String columnFamily,String column,String value) throws IOException {
            HTable table=new HTable(configuration,tableName);
            Put put=new Put(Bytes.toBytes(row));
            put.add(Bytes.toBytes(columnFamily),Bytes.toBytes(column),Bytes.toBytes(value));
            table.put(put);
        }
        
        //删除一条数据
        public static void  delRow(String tableName,String row) throws Exception {
            HTable table=new HTable(configuration,tableName);
            Delete delete=new Delete(Bytes.toBytes(row));
            table.delete(delete);
        }
        
        //删除多条数据
        public static void delMulRows(String tableName,String[] rows) throws Exception{
            HTable table=new HTable(configuration,tableName);
            List<Delete> list=new ArrayList<Delete>();
            for (String row:rows) {
                Delete delete=new Delete(Bytes.toBytes(row));
                list.add(delete);
            }
            table.delete(list);
        }
        
        //获取一行数据
        public static void getRow(String tableName,String row) throws Exception {
            HTable table=new HTable(configuration,tableName);
            Get get=new Get(Bytes.toBytes(row));
            Result result=table.get(get);
            for(KeyValue keyValue:result.raw()){
                System.out.println("Row Name:"+new String(keyValue.getRow())+" ");
                System.out.println("Timestamp:"+keyValue.getTimestamp()+" ");
                System.out.println("Column Family:"+new String(keyValue.getFamily())+" ");
                System.out.println("Row Name:"+new String(keyValue.getQualifier())+" ");
                System.out.println("Value:"+new String(keyValue.getValue())+" ");
            }
        }
        
        //获取所有数据
        public static void  getAllRows(String tableName) throws Exception {
            HTable table=new HTable(configuration,tableName);
            Scan scan=new Scan();
            ResultScanner resultScanner=table.getScanner(scan);
            for(Result result:resultScanner){
                for(KeyValue keyValue:result.raw()){
                    System.out.print("Row Name:"+new String(keyValue.getRow())+" ");
                    System.out.println("Timestamp:"+keyValue.getTimestamp()+" ");
                    System.out.println("Column Family:"+new String(keyValue.getFamily())+" ");
                    System.out.println("Row Name:"+new String(keyValue.getQualifier())+" ");
                    System.out.println("Value:"+new String(keyValue.getValue())+" ");
                }
            }
        }
        
        public static void main(String[] args) {
            try {
                String tableName="users";
                
                // 第一步:创建数据库表:“users” 
                String[] columnFamilyStrings={"info","course"};
                OperateTable.createTable(tableName, columnFamilyStrings);
                
                 // 第二步:向数据表的添加数据   
                // 添加第一行数据   
                OperateTable.addRow(tableName, "tht", "info", "age", "20");  
                OperateTable.addRow(tableName, "tht", "info", "sex", "boy");  
                OperateTable.addRow(tableName, "tht", "course", "china", "97");  
                OperateTable.addRow(tableName, "tht", "course", "math", "128");  
                OperateTable.addRow(tableName, "tht", "course", "english", "85");  
                // 添加第二行数据   
                OperateTable.addRow(tableName, "xiaoxue", "info", "age", "19");  
                OperateTable.addRow(tableName, "xiaoxue", "info", "sex", "boy");  
                OperateTable.addRow(tableName, "xiaoxue", "course", "china", "90");  
                OperateTable.addRow(tableName, "xiaoxue", "course", "math", "120");  
                OperateTable.addRow(tableName, "xiaoxue", "course", "english", "90");  
                // 添加第三行数据   
                OperateTable.addRow(tableName, "qingqing", "info", "age", "18");  
                OperateTable.addRow(tableName, "qingqing", "info", "sex", "girl");  
                OperateTable.addRow(tableName, "qingqing", "course", "china", "100");  
                OperateTable.addRow(tableName, "qingqing", "course", "math", "100");  
                OperateTable.addRow(tableName, "qingqing", "course", "english", "99"); 
                
                System.out.println("获取一条数据:");
                OperateTable.getRow(tableName, "tht");
                
                System.out.println("获取所有数据");  
                OperateTable.getAllRows(tableName);
                
                System.out.println("删除一条数据");
                OperateTable.delRow(tableName, "tht");
                OperateTable.getAllRows(tableName);
                
                System.out.println("删除多条数据"); 
                String[] rowsStrings={ "xiaoxue", "qingqing" }; 
                OperateTable.delMulRows(tableName, rowsStrings);
                OperateTable.getAllRows(tableName);
                
                System.out.println("删除数据库");  
                OperateTable.deleteTable(tableName);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    View Code
  • 相关阅读:
    pycharm设置linux中的python解析器进行本地开发
    linux安装python
    Jenkins自动构建的几种方式
    接口加密
    python接口自动化—unittest 常用的断言方法
    cookie 组成结构
    post请求的四种数据格式
    jmeter之数据库相关
    jmeter函数简介
    java_第一年_JDBC(6)
  • 原文地址:https://www.cnblogs.com/liutoutou/p/3545513.html
Copyright © 2011-2022 走看看