hbaseでのjavaクライアント操作

16458 ワード


JAva操作hbaseのプロファイル



    4.0.0
    org.example
    doit15-hbase
    1.0-SNAPSHOT
    
        UTF-8
        1.8
        1.8
    
    
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
            junit
            junit
            4.12
            compile
        
        
            org.apache.hbase
            hbase-client
            2.0.4
        
        
            org.apache.hadoop
            hadoop-client
            2.7.7
        
        
            org.apache.hadoop
            hadoop-common
            2.7.7
        
        
            org.apache.hbase
            hbase-server
            2.0.4
        
        
        
            org.apache.hbase
            hbase-mapreduce
            2.0.4
        
        
            com.google.code.gson
            gson
            2.8.5
        
        
        
            org.apache.phoenix
            phoenix-core
            5.0.0-HBase-2.0
        
    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.5.1
                
                    1.8
                    1.8
                
            
 
            
                org.apache.maven.plugins
                maven-assembly-plugin
                2.6
                
                    
                        jar-with-dependencies
                    
                
                
                    
                        make-assembly
                        
                        package
                        
                            single
                        
                    
                
            
 
        
    


 
 
 
クライアントデータの取得
package doit01;

import Utils.HbaseUtils;
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.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;

public class GatDt {
    public static void main(String[] args) throws IOException {
        //    
        Configuration conf = HBaseConfiguration.create();
        //  zk    ,      zookeeper  
        conf.set("hbase.zookpeer.quorum","linux01:2181,linux02:2181,linux03:2181");

        //      ,  hbase     
        //ConnectionFactory  hbase      
        //createConnection()              
        Connection conn = ConnectionFactory.createConnection(conf);
        // TableName tableName = new TableName();  TableName     private       new
        //   ,       


        //        
        TableName tb_user = TableName.valueOf("tb_user");
        Table user = conn.getTable(tb_user);//          
        //     ,  user 

        //  get  ,       ,
        //      ,              
        Get get = new Get("rk001".getBytes());//  hbase    

        //        ,        
        //        s    s
        Result result = user.get(get);
        HbaseUtils.showData(result);
        //getTable()        tableName,getTable    table,   new  tableName
        //Table tb_user = conn.getTable("tb_user".getBytes());

        //result.advance()             
        //result.current         
        while (result.advance()){
            //         :        v: 
            Cell cell = result.current();
            /*byte[] rowArray = cell.getRowArray();//  
            byte[] familyArray = cell.getFamilyArray();//  
            byte[] qualifierArray = cell.getQualifierArray();//  

            byte[] valueArray = cell.getValueArray();// */
            //          ,               ,CellUtil        
            byte[] family = CellUtil.cloneFamily(cell);//  
            byte[] qualifier = CellUtil.cloneQualifier(cell);//  
            byte[] value = CellUtil.cloneValue(cell);// 
            byte[] row = CellUtil.cloneRow(cell);//  
            System.out.println(new String(qualifier)+"----"+new String(value)+new String(family)+new String(row));


        }
        user.close();
        conn.close();


    }
}

 
JAvaクライアントはhbaseで値を取り、
1.プロファイルの取得
2.接続zookpeer
3.プロファイルとzkに基づいて、接続オブジェクトを作成する
4.テーブル名を呼び出します.テーブル名を各ストレージスペースに変更する必要があります.
5.次に接続オブジェクトを作成した後、接続オブジェクトを使用してテーブルを取得します.
6.このテーブルから1行のデータを呼び出し、1行をrowkeyで表します.
7.この行のデータを取り出してresultを返す
8.このresultはこの行のデータを表し、
9.次の行が存在する場合は、その行のデータを呼び出してセルを返します.
10.セルの中身を解析し、中身を呼び出す
11.印刷
 
package doit16;

import Utils.HbaseUtils;
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.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;

public class GetTableData {
    public static void main(String[] args) throws IOException {

        //           
        Configuration conf = HBaseConfiguration.create();
        //  zookpeer
        conf.set("hbase.zookeeper.quorum", "linux01:2181,linux02:2181,linux03:2181");

        //      ,  hbase    
        Connection conn = ConnectionFactory.createConnection(conf);
        //api     tableName,        ,        ,          ,
        TableName tb_user = TableName.valueOf("tb_user");
        //hbase       ,   hbase      getTable  hbase      ,
        Table user = conn.getTable(tb_user);
        //         
        Get get = new Get("rk002".getBytes());
        //  get         
        
        Result result = user.get(get);
        //HbaseUtils.showData(result);
        //  p         ,               cell
        //  CellUtil          ,       
        //    
        while(result.advance()){
            //      K   :  :      V: 
            Cell cell = result.current();
            byte[] row = CellUtil.cloneRow(cell); //   
            byte[] family = CellUtil.cloneFamily(cell);  //   
            byte[] qua = CellUtil.cloneQualifier(cell); //   
            byte[] v = CellUtil.cloneValue(cell); //  
            System.out.println(new String(qua)+"--"+new String(v));
        }
        user.close();
        conn.close();

    }
}

 
テーブルの作成
import Utils.HbaseUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
/**
 *       ,
 * 1.         
 * 2.       ,              ,           
 * 3.             ,        ,       ,     ,     ,
 * 4.     ,      
 */
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//admin:      ,           
//table         get  scan  put
public class TableDemo {
    public static void main(String[] args) throws Exception {
        //        
        Admin admin = HbaseUtils.getHbaseAdmin();

        //        stu         
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu"));

        //     
        ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf1"));

        //             
        familyDescriptorBuilder.setMaxVersions(5);
        familyDescriptorBuilder.setTimeToLive(240);

        //    
        ColumnFamilyDescriptor columnFamilyDescriptor = familyDescriptorBuilder.build();
        //              
        tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor);

        //     
        TableDescriptor tableDescriptor = tableDescriptorBuilder.build();  //tableDescriptor     
        //      

        //    
        admin.createTable(tableDescriptor);  //         
        admin.close();


    }


}

プリディビジョンオブジェクト
 
 public static void main(String[] args) throws Exception {
        //        
        Admin admin = HbaseUtils.getHbaseAdmin();
       // CreateTable(admin);

      //  admin.close();

        //  region   
        //1.       
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu3"));

        //         
        ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf3"));

        //      
        familyDescriptorBuilder.setMaxVersions(5);

        //      
        ColumnFamilyDescriptor familyDescriptor = familyDescriptorBuilder.build();

        //           
        tableDescriptorBuilder.setColumnFamily(familyDescriptor);

        //  
        TableDescriptor build = tableDescriptorBuilder.build();

        //  region   
        //       ,      region
        byte[][] keys =  new byte[][] {"rk025".getBytes(),"rk051".getBytes()};

        admin.createTable(build,keys);
        admin.close();





    }

 
プリスコアregion、つまり1つのデータテーブルが非常に大きい場合、同時に1つのregionに挿入するとホットな問題が発生します.解決策は、データテーブルをマルチスコアに分割し、rowkeyで分割することです.rk 025  rk051  rk075   これにより4つのブロックに分けて異なる4つのregionに格納することができ、
create "tb_user"  ,  "cf", SPLITS=>[' rk026 ' , '  rk051 ' ,  ' rk 076']ブロック化の構文   ブロックの表示  list_region  "tb_user"
 
テーブルの削除
public static void main(String[] args) throws Exception {
        //        
        Admin admin = HbaseUtils.getHbaseAdmin();
       // CreateTable(admin);
        //  admin.close();

       //        
        //        ,     ,
        TableName tb_stu = TableName.valueOf("tb_stu2");

        if(admin.tableExists(tb_stu)){
            admin.disableTable(tb_stu);
            if(admin.isTableDisabled(tb_stu)){
                //   
                admin.deleteTable(tb_stu);
            }else {
                System.out.println("     ");
            }
        }else {
            System.out.println("    ");
        }
        admin.close();

    }

 
テーブルの簡単な作成、変更、クエリー、削除操作のカプセル化操作
package doit16;

import Utils.HbaseUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
/**
 *       ,
 * 1.         
 * 2.       ,              ,           
 * 3.             ,        ,       ,     ,     ,
 * 4.     ,      
 */
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//admin:      ,           
//table         get  scan  put
public class TableDemo {
    public static void main(String[] args) throws Exception {
        //        
        Admin admin = HbaseUtils.getHbaseAdmin();
        ChangeTableContain(admin);


    }

    private static void ChangeTableContain(Admin admin) throws IOException {
        // CreateTable(admin);
        //  admin.close();
        // DeleteTable(admin);
       /*
       //   :           ,  ,            ,              ,       ,   admin      
       //        
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_user"));
        //       
        ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf4".getBytes());
        //    
        ColumnFamilyDescriptor familyDescriptor = familyDescriptorBuilder.build();
        //            
        tableDescriptorBuilder.setColumnFamily(familyDescriptor);
        //   
        TableDescriptor build = tableDescriptorBuilder.build();
        //   
        admin.modifyTable(build);
        admin.close();
        //          */
/**
 *    Linux01       ,                  ,             ,      ,      ,  admin       
 *      ,      ,         
 */
        //      
        TableName tb_user = TableName.valueOf("tb_user");

        //         
        ColumnFamilyDescriptorBuilder cfb = ColumnFamilyDescriptorBuilder.newBuilder("cf4".getBytes());//             
        //         
        cfb.setMaxVersions(5);
        cfb.setTimeToLive(240);

        //    
        ColumnFamilyDescriptor cfd = cfb.build();

        admin.modifyColumnFamily(tb_user,cfd);
    }

    private static void DeleteTable(Admin admin) throws IOException {
        //        
        //        ,     ,
        TableName tb_stu = TableName.valueOf("tb_stu2");

        if(admin.tableExists(tb_stu)){
            admin.disableTable(tb_stu);
            if(admin.isTableDisabled(tb_stu)){
                //   
                admin.deleteTable(tb_stu);
            }else {
                System.out.println("     ");
            }
        }else {
            System.out.println("    ");
        }
    }

    private static void CreateRegionTable(Admin admin) throws IOException {
        //  region   
        //1.       
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu3"));

        //         
        ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf3"));

        //      
        familyDescriptorBuilder.setMaxVersions(5);

        //      
        ColumnFamilyDescriptor familyDescriptor = familyDescriptorBuilder.build();

        //           
        tableDescriptorBuilder.setColumnFamily(familyDescriptor);

        //  
        TableDescriptor build = tableDescriptorBuilder.build();

        //  region   
        //       ,      region
        byte[][] keys =  new byte[][] {"rk025".getBytes(),"rk051".getBytes()};

        admin.createTable(build,keys);
    }

    private static void CreateTable(Admin admin) throws IOException {
        //     
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu2"));

        //      
        ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("fc2"));

        //           
        familyDescriptorBuilder.setMaxVersions(5);
        familyDescriptorBuilder.setTimeToLive(240);

        //    
        ColumnFamilyDescriptor columnFamilyDescriptor = familyDescriptorBuilder.build();

        //       
        tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor);

        //   
        TableDescriptor tableDescriptor = tableDescriptorBuilder.build();


        admin.createTable(tableDescriptor);
    }


}