Hbase之新型API使用

Hbase之新型API使用

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

        Configuration conf = HBaseConfiguration.create();
        // 新型API创建连接
        Connection conn = ConnectionFactory.createConnection(conf);
        // 获得管理admin对象
        Admin admin = conn.getAdmin();
        // 连接表
        TableName tname = TableName.valueOf("test");
        conn.getTable(tname);
        // 创建表
        admin.createTable(null);
        // disable表
        admin.disableTable(null);
        // 删除表
        admin.deleteTable(null);

        Table table = conn.getTable(null);
        // 查询
        // table.get(null);

        // 添加
        // table.put(null);

        // scan表
        // ResultScanner rs=table.getScanner(null);
        // for (Result result : rs) {
        //
        // }
    }

Hbase大数据操作–使用新型API插入万及以上数据

  1. 静态声明Configuration和Connection对象

    public static Configuration conf = null;
    public static Connection conn = null;
    
  2. 创建静态程序块

    /**
     * 运行时创建静态程序块
     */
    static {
        try {
            // 新型API创建连接
            conf = HBaseConfiguration.create();
            conn = ConnectionFactory.createConnection(conf);
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
    
  3. 创建两个静态方法将String和int转换成byte[]

    public static byte[] converBytes(String str) {
        return Bytes.toBytes(str);
    }
    
    public static byte[] converBytes(int i) {
        return Bytes.toBytes(i);
    }
    
  4. 创建表

    /**
     * 创建表
     * @param tname
     * 表名称
     * @throws Exception
     */
    public static void createTable(String name) throws Exception {
        // 获得admin对象
        Admin admin = conn.getAdmin();
        // 指定表名称
        TableName tname = TableName.valueOf(name);
        // 判断表是否存在
        if (admin.tableExists(tname)) {
            // 删除表
            admin.disableTable(tname);
            admin.deleteTable(tname);
        }
        // 表描述符
        HTableDescriptor htd = new HTableDescriptor(tname);
        // 指定字段
        // 添加列族
        HColumnDescriptor hcd = new HColumnDescriptor("data");
        htd.addFamily(hcd);
        // 创建表
        admin.createTable(htd);
    }
    
  5. 循环插入数据

    /**
     * 循环插入数据
     * 
     * @param n
     * 插入次数
     * @throws IOException
     */
    
    public static void batchPut(int n) throws IOException {
    
        TableName tname = TableName.valueOf("test");
        Table t = conn.getTable(tname);
        // 构造不同put对象添加
        Put put = null;
        for (int i = 1; i < n; i++) {
            // 行,以数字递增
            put = new Put(converBytes(i));
            // 添加
            put.addColumn(converBytes("data"), converBytes("1"), converBytes("tom" + i));
            t.put(put);
            System.out.println(i);
        }
        t.close();
    }
    
  6. main函数

    public static void main(String[] args) throws Exception {
        createTable("test");
        batchPut(10000);
    }
    
  7. 将项目导出在主节点运行最后结果

猜你喜欢

转载自blog.csdn.net/weixin_39394526/article/details/75299986