史上最も全面的で完璧な大データは第八章Hbase(三)Java APIを勉強します。

59368 ワード

Hbase----初見と環境構築
Hbase(二)shell操作
Hbase(三)Java API
Hbase(四)Mr on Hbase&Hbaseのアーキテクチャ
Hbase(五)Hbaseの読み書きの流れ
Hbase完結編Hbaseクラスタ構築及び関連操作
四、Java API
4.1依存
 <dependency>
   <groupId>org.apache.hbasegroupId>
   <artifactId>hbase-clientartifactId>
   <version>1.2.4version>
dependency>
4.2クライアントを取得する
private Connection connection;
    private Admin admin;

    @Before
    public void getAdmin() throws Exception {

        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "HadoopNode00");
        conf.set("hbase.zookeeper.property.clientPort", "2181");
        connection = ConnectionFactory.createConnection(conf);

        admin = connection.getAdmin();

    }
4.3リソースを閉じる

    @After
    public void close() throws Exception {
        admin.close();
        connection.close();
    }
4.4名前空間操作
名前空間を作成
 @Test
    public void createNameSpace() throws Exception {

        NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("hadoop1").addConfiguration("csdn", "123").build();

        admin.createNamespace(namespaceDescriptor);

    }
名前空間を変更
 @Test
    public void changeNameSpace()  throws Exception{

        NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("hadoop").removeConfiguration("csdn").build();

        admin.modifyNamespace(namespaceDescriptor);

    }

名前空間を削除
@Test
    public void deleteNameSpace() throws Exception{


        admin.deleteNamespace("hadoop");

    }
名前空間を一覧表示

    @Test
    public void listNameSpace() throws Exception {

        NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors();


        for (NamespaceDescriptor namespaceDescriptor : namespaceDescriptors) {


            System.out.println(namespaceDescriptor.getName());
        }

    }
4.5表操作
テーブルを作成
 @Test
    public void createTable() throws Exception {
        /*
         *           TableName 
         * */
        TableName tableName = TableName.valueOf("csdn:t_java");


        /*
         *
         *                 
         * */
        HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);


        /*
         *                  
         * */
        HColumnDescriptor cf1 = new HColumnDescriptor("cf1");
        //           
        cf1.setMaxVersions(3);

        /*
         *                  
         * */
        HColumnDescriptor cf2 = new HColumnDescriptor("cf2");
        //           
        cf2.setMaxVersions(3);

        //           :  
        tableDescriptor.addFamily(cf1);
        tableDescriptor.addFamily(cf2);


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

    }

    
テーブルを削除
    @Test
    public void deleteTable() throws Exception {
        TableName tableName = TableName.valueOf("csdn:t_java");
        if (admin.tableExists(tableName)) {

            admin.disableTable(tableName);

            admin.deleteTable(tableName);
        }

    }
4.6 CURD
put
単一のレコードを挿入して更新します。

    @Test
    public void putData() throws Exception {

        TableName tableName = TableName.valueOf("csdn:t_user");

        Table table = connection.getTable(tableName);

        /*
         *          
         * */
        Put put = new Put("1".getBytes());
        /*
         *       :           
         * */
        put.addColumn("cf1".getBytes(), "name".getBytes(), "zhangsan".getBytes());
        put.addColumn("cf1".getBytes(), "pwd".getBytes(), "123".getBytes());
        put.addColumn("cf2".getBytes(), "age".getBytes(), "18".getBytes());
        put.addColumn("cf2".getBytes(), "salary".getBytes(), "1000".getBytes());


        table.put(put);
        table.close();

    }

一括挿入
 @Test
    public void putManyData() throws Exception {

        TableName tableName = TableName.valueOf("csdn:t_user");

        Table table = connection.getTable(tableName);

        /*
         *          
         * */
        Put put = new Put("2".getBytes());
        /*
         *       :           
         * */
        put.addColumn("cf1".getBytes(), "name".getBytes(), "lisi".getBytes());
        put.addColumn("cf1".getBytes(), "pwd".getBytes(), "123".getBytes());
        put.addColumn("cf2".getBytes(), "age".getBytes(), "20".getBytes());
        put.addColumn("cf2".getBytes(), "salary".getBytes(), "20000".getBytes());

        ArrayList<Put> puts = new ArrayList<Put>();
        puts.add(put);


        table.put(puts);
        table.close();

    }

@Test
    public void putManyData() throws Exception {

        TableName tableName = TableName.valueOf("csdn:t_user");


        BufferedMutator bufferedMutator = connection.getBufferedMutator(tableName);


        /*
         *          
         * */
        Put put = new Put("2".getBytes());
        /*
         *       :           
         * */
        put.addColumn("cf1".getBytes(), "name".getBytes(), "ls".getBytes());
        put.addColumn("cf1".getBytes(), "pwd".getBytes(), "123".getBytes());
        put.addColumn("cf2".getBytes(), "age".getBytes(), "20".getBytes());
        put.addColumn("cf2".getBytes(), "salary".getBytes(), "20000".getBytes());

        ArrayList<Put> puts = new ArrayList<Put>();
        puts.add(put);

        bufferedMutator.mutate(puts);
        bufferedMutator.close();


    }

delete

    @Test
    public void deleteData() throws Exception {
        TableName tableName = TableName.valueOf("csdn:t_user");

        Table table = connection.getTable(tableName);

        Delete delete = new Delete("2".getBytes());

        table.delete(delete);
        table.close();


    }

一括削除

    @Test
    public void deleteManyData() throws Exception {
        TableName tableName = TableName.valueOf("csdn:t_user");


        Table table = connection.getTable(tableName);

        Delete delete = new Delete("1".getBytes());

        table.delete(delete);
        table.close();


    }
get
 @Test
    public void getData() throws Exception{

        Table table = connection.getTable(TableName.valueOf("csdn:t_user"));

        Get get = new Get("2".getBytes());

        Result result = table.get(get);


        /*
        *         
        * */
        byte[] name = result.getValue("cf1".getBytes(), "name".getBytes());
        byte[] pwd = result.getValue("cf1".getBytes(), "pwd".getBytes());
        byte[] age = result.getValue("cf2".getBytes(), "age".getBytes());
        byte[] salary = result.getValue("cf2".getBytes(), "salary".getBytes());

        System.out.println("   :"+Bytes.toString(name)+",    :"+Bytes.toString(pwd)+",   :"+Bytes.toString(age)+",   :"+Bytes.toString(salary));

    }
複数のバージョンのデータを取得します。
 @Test
    public void getManyData() throws Exception {

        Table table = connection.getTable(TableName.valueOf("csdn:t_user"));
        Get get = new Get("2".getBytes());
        get.setMaxVersions(3);
        get.addColumn("cf1".getBytes(), "name".getBytes());

        Result result = table.get(get);
        List<Cell> columnCells = result.getColumnCells("cf1".getBytes(), "name".getBytes());

        for (Cell columnCell : columnCells) {


            byte[] rowData = CellUtil.cloneRow(columnCell);
            byte[] cfData = CellUtil.cloneFamily(columnCell);
            byte[] qualifierData = CellUtil.cloneQualifier(columnCell);
            byte[] data = CellUtil.cloneValue(columnCell);
            System.out.println("   :" + Bytes.toString(rowData) + ",    :" + Bytes.toString(cfData) + ",   :" + Bytes.toString(qualifierData) + ",   :" + Bytes.toString(data));

        }
    }

scan
@Test
    public void scanData() throws Exception {


        Table table = connection.getTable(TableName.valueOf("csdn:t_user"));

        Scan scan = new Scan();

        // scan.addFamily("cf1".getBytes());
        //scan.addColumn("cf1".getBytes(),"name".getBytes());

        PrefixFilter prefixFilter1 = new PrefixFilter("1".getBytes());
        PrefixFilter prefixFilter2 = new PrefixFilter("2".getBytes());

        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE, prefixFilter1, prefixFilter2);


        scan.setFilter(filterList);

        ResultScanner scanner = table.getScanner(scan);
        for (Result result : scanner) {
            System.out.println("------------------");
            byte[] name = result.getValue("cf1".getBytes(), "name".getBytes());
            byte[] pwd = result.getValue("cf1".getBytes(), "pwd".getBytes());
            byte[] age = result.getValue("cf2".getBytes(), "age".getBytes());
            byte[] salary = result.getValue("cf2".getBytes(), "salary".getBytes());

            System.out.println("   :" + Bytes.toString(name) + ",    :" + Bytes.toString(pwd) + ",   :" + Bytes.toString(age) + ",   :" + Bytes.toString(salary));


        }

    scanner.close();
        table.close();
    }
もっともっともっと頑張っている私たちに捧げます。忙しくても、休みと食事に気をつけてください。私は私です。インターネットでゴロゴロする情熱を持って、三連をください。