Hbase之JAVA API增删查改

Hbase之JAVA API

一. 创建表格
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;
import java.util.Scanner;

public class CreateTable {

    public static void main(String[] args) throws IOException {
        //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration conf = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址
        conf.set("hbase.zookeeper.quorum","niitchina");
        //HbaseAdmin类用于管理表的信息,包括创建表,删除表,列出表,使表有效无效等方法
        //conf对象传入使表格可以连接创建
        //admin是管理的对象
        HBaseAdmin admin = new HBaseAdmin(conf);
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        //HTableDescriptor类 用于表的名字极其对应表的列族
        //传入表名字到htable对象,htable有addFamiy等方法
        HTableDescriptor htable = new HTableDescriptor(TableName.valueOf(tb_name));
        //HColumnDescriptor实例 用于表列族名编写,维护着关于列族的信息
        HColumnDescriptor cf1 = new HColumnDescriptor("Edu_Info");
        HColumnDescriptor cf2 = new HColumnDescriptor("Per_Info");
        //htable addFamiy方法 给表格增加列族
        htable.addFamily(cf1);
        htable.addFamily(cf2);
        //createTable方法创建表格
        admin.createTable(htable);
        System.out.println("Table Created Successfully");
        //close方法关闭
        admin.close();
    }


}

//------------------------------------------------------------------------------
//或者

package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.security.access.Permission;

import java.io.IOException;
import java.util.Scanner;

public class Create_Table {

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

        Configuration con = new Configuration();
        con.set("hbase.zookeeper.quorum","niit01");
        System.setProperty("HADOOP_USER_NAME", "root");

        Connection conn = ConnectionFactory.createConnection(con);
        Admin admin = conn.getAdmin();
        System.out.println("Enter the table name:");
        Scanner sc = new Scanner(System.in);
        String tb_name= sc.next();
        TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(TableName.valueOf(tb_name));
        tdb.setColumnFamily(ColumnFamilyDescriptorBuilder.of("Per_Info")).build();
        tdb.setColumnFamily(ColumnFamilyDescriptorBuilder.of("Edu_Info")).build();
        admin.createTable(tdb.build());
        System.out.println("Table created successfully");
        admin.close();
    }

}

二. 插入数据
package com.hbase;

import org.apache.hadoop.conf.Configuration;
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.util.Bytes;

import java.io.IOException;
import java.util.Scanner;
public class InsertData {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        HTable htable = new HTable(conf,tb_name);  // DML : insert , update, delete
        System.out.println("Enter the row key");
        String rk = sc.next();
        Put p = new Put(Bytes.toBytes(rk));
        p.add(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"),Bytes.toBytes("John"));
        p.add(Bytes.toBytes("Per_Info"),Bytes.toBytes("address"),Bytes.toBytes("Hainan"));
        p.add(Bytes.toBytes("Per_Info"),Bytes.toBytes("age"),Bytes.toBytes("20"));
        htable.put(p);
        System.out.println("Data Inserted Successfully");
        htable.close();


    }
}

三. 循环插数据
public static  void put() throws IOException{
        Configuration configuration = HBaseConfiguration.create();//实例化配置信息对象
        configuration.set("hbase.zookeeper.quorum", "niit");//明确目标地址
        HBaseAdmin admin = new HBaseAdmin(configuration);//实例化hbase对象
        System.out.println("please input the table name");
        Scanner sc = new Scanner(System.in);
        String tb_name = sc.next();
        HTable table = new HTable(configuration,TableName.valueOf(tb_name));
        List<Put> puts = new ArrayList<>();//集合
                  // 循环添加数据
        System.out.println("please input the row number");
        Scanner r = new Scanner(System.in);
        int ro = r.nextInt();
        for (int i = 1; i <= ro; i++) {
            byte[] row = Bytes.toBytes("row" + i);
            Put put = new Put(row);
            byte[] columnFamily = Bytes.toBytes("data");
            byte[] qualifier = Bytes.toBytes(String.valueOf(i));
            byte[] value = Bytes.toBytes("value" + i);
            put.addColumn(columnFamily, qualifier, value);
            puts.add(put);
        }
        table.put(puts);
        System.out.println("ok");
    }
四. 得到数据
        package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;
public class ReadData_GET {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        HTable htable = new HTable(conf,tb_name);
        System.out.println("Enter the row key");
        String rk = sc.next();
        Get g = new Get(Bytes.toBytes(rk));
        Result result = htable.get(g);  // we have only one row , so we will not use loop.
        byte[] address = result.getValue(Bytes.toBytes("Per_Info"),Bytes.toBytes("address"));
        byte[] degree = result.getValue(Bytes.toBytes("Edu_Info"),Bytes.toBytes("degree"));
        System.out.println("Address : "+Bytes.toString(address));
        System.out.println("Degree : "+Bytes.toString(degree));
    }
}

五. 扫描表格内容(这里格式输出后设置的和hbase shell里一样【也许】,可自行更改)
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HTable;
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;

import java.io.IOException;
import java.util.Scanner;
public class ReadData_SCAN {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niit01");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        HTable htable = new HTable(conf,tb_name);
        Scan scan = new Scan();
        scan.addColumn(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"));
        scan.addColumn(Bytes.toBytes("Edu_Info"),Bytes.toBytes("degree"));
        ResultScanner rs = htable.getScanner(scan);
        // rs contains the data from name and degree columns.
        for(Result result = rs.next();result!=null;result=rs.next())
        {
            byte[] name = result.getValue(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"));
            byte[] degree = result.getValue(Bytes.toBytes("Edu_Info"),Bytes.toBytes("degree"));
            System.out.println("Name : "+Bytes.toString(name));
            System.out.println("Degree : "+Bytes.toString(degree));
        }
        htable.close();

    }
}

五. 显示所有表格
       public static void ListTables() throws IOException {
            Configuration configuration = HBaseConfiguration.create();//实例化配置信息对象
            configuration.set("hbase.zookeeper.quorum", "niit");//明确目标地址
            HBaseAdmin admin = new HBaseAdmin(configuration);
            HTableDescriptor[] descriptors = admin.listTables();
            for(int x=0 ; x<descriptors.length;x++){
                System.out.println(descriptors[x].getNameAsString());
            }
        }
六. 删除表格
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;
import java.util.Scanner;

public class Drop_table {
    public static void main(String[] args) throws IOException {
        Configuration con = new Configuration();
        con.set("hbase.zookeeper.quorum","niit01");
        System.setProperty("HADOOP_USER_NAME","root");
        Connection conn= ConnectionFactory.createConnection(con);
        Admin admin = conn.getAdmin();
        System.out.println("Enter the table Name:");
        Scanner sc = new Scanner(System.in);
        String tb_name = sc.next();
        Boolean isDisabled = admin.isTableDisabled(TableName.valueOf(tb_name));

        if(isDisabled==false) {
            admin.disableTable(TableName.valueOf(tb_name));
            admin.deleteTable(TableName.valueOf(tb_name));
        }
        else
            admin.deleteTable(TableName.valueOf(tb_name));
        System.out.println("Table Dropped successfuly");
        admin.close();
        conn.close();
    }
}



//-------------------------------------------------------------------
//或者


public static void dropTable() throws IOException {
            Configuration configuration = HBaseConfiguration.create();//实例化配置信息对象
            configuration.set("hbase.zookeeper.quorum", "niit");//明确目标地址
            HBaseAdmin admin = new HBaseAdmin(configuration);
            System.out.println("please input the table name");
            Scanner sc = new Scanner(System.in);
            String tb_name = sc.next();
            if (admin.tableExists(TableName.valueOf(tb_name))) {
                admin.disableTable(tb_name);
                admin.deleteTable(tb_name);
                System.out.println("table " + tb_name + " delete successfully!");
            } else {
                System.out.println("table " + tb_name + " not exist!");
            }
        }
七.表格失效
 package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;
import java.util.Scanner;

public class Disable_Table {

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

        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        HBaseAdmin admin = new HBaseAdmin(conf);
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        Boolean isDisabled = admin.isTableDisabled(tb_name);
        if(isDisabled==false)
            System.out.println("Table is enabled");
        else
            System.out.println("Table is disabled");

        if(!isDisabled)
        {
            admin.disableTable(tb_name);;
            System.out.println("Now Table is disabled");
        }




    }
}

八. 表格还原
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;
import java.util.Scanner;

public class Enble_Table {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        HBaseAdmin admin = new HBaseAdmin(conf);
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        Boolean isEnabled = admin.isTableEnabled(tb_name);
        if(isEnabled==true)
            System.out.println(tb_name+": Table is already Enabled");
        else
            System.out.println(tb_name+": Table is Disabled");

        if(!isEnabled)
        {
            admin.enableTable(tb_name);
            System.out.println(tb_name+": Table is now Enabled");
        }

        admin.close();

    }
}

九.删除数据
public static void DeleteData() throws IOException {
            Configuration configuration = HBaseConfiguration.create();//实例化配置信息对象
            configuration.set("hbase.zookeeper.quorum", "niit");//明确目标地址
            HTable table = new HTable(configuration,"company");
            Delete delete = new Delete(Bytes.toBytes("004"));
            delete.deleteColumn(Bytes.toBytes("address"),Bytes.toBytes("country"));
            delete.deleteColumn(Bytes.toBytes("employee"),Bytes.toBytes("city"));
            table.delete(delete);
            System.out.println("company:name for row 004 deleted");
        }
十.退出hbase shell
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;

public class DeleteData {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        //可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。
        HTable htable = new HTable(conf,tb_name);
        System.out.println("Enter the row key");
        String rk = sc.next();
        //Delete用来对单个行执行删除操作
        Delete del = new Delete(Bytes.toBytes(rk));
        del.deleteColumn(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"));
        htable.delete(del);
        System.out.println("Data deleted Successfully");
        htable.close();

    }
}

总代码(新)

package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;
import java.util.Scanner;

public class CreateTable {

    public static void main(String[] args) throws IOException {
        //实例化配置信息对象,简而言之Configuration类用于连接Windows中的idea软件与Linux中的hdfs和里面的hbase等配置文件
        Configuration conf = new Configuration();
        //conf对象得到数据库连接信息后使用set方法连接上zookeeper和对应的虚拟机主机名或者ip地址
        conf.set("hbase.zookeeper.quorum","niitchina");
        //HbaseAdmin类用于管理表的信息,包括创建表,删除表,列出表,使表有效无效等方法
        //conf对象传入使表格可以连接创建
        //admin是管理的对象
        HBaseAdmin admin = new HBaseAdmin(conf);
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        //HTableDescriptor类 用于表的名字极其对应表的列族
        //传入表名字到htable对象,htable有addFamiy等方法
        HTableDescriptor htable = new HTableDescriptor(TableName.valueOf(tb_name));
        //HColumnDescriptor实例 用于表列族名编写,维护着关于列族的信息
        HColumnDescriptor cf1 = new HColumnDescriptor("Edu_Info");
        HColumnDescriptor cf2 = new HColumnDescriptor("Per_Info");
        //htable addFamiy方法 给表格增加列族
        htable.addFamily(cf1);
        htable.addFamily(cf2);
        //createTable方法创建表格
        admin.createTable(htable);
        System.out.println("Table Created Successfully");
        //close方法关闭
        admin.close();
    }


}
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;

public class DeleteData {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        //可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。
        HTable htable = new HTable(conf,tb_name);
        System.out.println("Enter the row key");
        String rk = sc.next();
        //Delete用来对单个行执行删除操作
        Delete del = new Delete(Bytes.toBytes(rk));
        del.deleteColumn(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"));
        htable.delete(del);
        System.out.println("Data deleted Successfully");
        htable.close();

    }
}
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;
import java.util.Scanner;

public class Disable_Table {

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

        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        HBaseAdmin admin = new HBaseAdmin(conf);
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        Boolean isDisabled = admin.isTableDisabled(tb_name);
        if(isDisabled==false)
            System.out.println("Table is enabled");
        else
            System.out.println("Table is disabled");

        if(!isDisabled)
        {
            admin.disableTable(tb_name);;
            System.out.println("Now Table is disabled");
        }




    }
}
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;
import java.util.Scanner;

public class Enble_Table {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        HBaseAdmin admin = new HBaseAdmin(conf);
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        Boolean isEnabled = admin.isTableEnabled(tb_name);
        if(isEnabled==true)
            System.out.println(tb_name+": Table is already Enabled");
        else
            System.out.println(tb_name+": Table is Disabled");

        if(!isEnabled)
        {
            admin.enableTable(tb_name);
            System.out.println(tb_name+": Table is now Enabled");
        }

        admin.close();

    }
}
package com.hbase;

import org.apache.hadoop.conf.Configuration;
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.util.Bytes;

import java.io.IOException;
import java.util.Scanner;
public class InsertData {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        HTable htable = new HTable(conf,tb_name);  // DML : insert , update, delete
        System.out.println("Enter the row key");
        String rk = sc.next();
        Put p = new Put(Bytes.toBytes(rk));
        p.add(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"),Bytes.toBytes("John"));
        p.add(Bytes.toBytes("Per_Info"),Bytes.toBytes("address"),Bytes.toBytes("Hainan"));
        p.add(Bytes.toBytes("Per_Info"),Bytes.toBytes("age"),Bytes.toBytes("20"));
        htable.put(p);
        System.out.println("Data Inserted Successfully");
        htable.close();


    }
}
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Scanner;
public class ReadData_GET {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        HTable htable = new HTable(conf,tb_name);
        System.out.println("Enter the row key");
        String rk = sc.next();
        Get g = new Get(Bytes.toBytes(rk));
        Result result = htable.get(g);  // we have only one row , so we will not use loop.
        byte[] address = result.getValue(Bytes.toBytes("Per_Info"),Bytes.toBytes("address"));
        byte[] degree = result.getValue(Bytes.toBytes("Edu_Info"),Bytes.toBytes("degree"));
        System.out.println("Address : "+Bytes.toString(address));
        System.out.println("Degree : "+Bytes.toString(degree));
    }
}
package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HTable;
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;

import java.io.IOException;
import java.util.Scanner;
public class ReadData_SCAN {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","niitchina");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the table name");
        String tb_name = sc.next();
        HTable htable = new HTable(conf,tb_name);
        Scan scan = new Scan();
        scan.addColumn(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"));
        scan.addColumn(Bytes.toBytes("Edu_Info"),Bytes.toBytes("degree"));
        ResultScanner rs = htable.getScanner(scan);
        // rs contains the data from name and degree columns.
        for(Result result = rs.next();result!=null;result=rs.next())
        {
            byte[] name = result.getValue(Bytes.toBytes("Per_Info"),Bytes.toBytes("name"));
            byte[] degree = result.getValue(Bytes.toBytes("Edu_Info"),Bytes.toBytes("degree"));
            System.out.println("Name : "+Bytes.toString(name));
            System.out.println("Degree : "+Bytes.toString(degree));
        }
        htable.close();

    }
}

总代码(旧)

package com.demo;

import com.google.inject.internal.asm.$AnnotationVisitor;
import org.apache.commons.lang.time.StopWatch;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class HbaseTest {
    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;

    public static void main(String[] args) throws IOException {
       // CreateTable();
        //PutData();
        //GetData();
        //DeleteData();
        //dropTable();
        //Scan();
        //put();
        //ListTables();
        //disableTable();
        //ExitHbase_Shell();
    }

    //创建表格
        public static void CreateTable() throws IOException {

            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            System.out.println("please input the table name");
            Scanner sc = new Scanner(System.in);
            String tb_name = sc.next();
            HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(tb_name));
            System.out.println("please input the CF1 name");
            String cf1= sc.next();
            HColumnDescriptor CF1 = new HColumnDescriptor(cf1);
            descriptor.addFamily(CF1);
            System.out.println("please input the CF2 name");
            String cf2= sc.next();
            HColumnDescriptor CF2 = new HColumnDescriptor(cf2);
            descriptor.addFamily(CF2);
            if (admin.tableExists(TableName.valueOf(tb_name))){
                System.out.println("Table: " +tb_name+" is exist ! please change the name and try again");
            }
            else {
            admin.createTable(descriptor);
            System.out.println("Table: " + tb_name +" successfully created");
            }
        }



    //插入数据1 一个一个插
        public static void PutData() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            System.out.println("please input the table name");
            Scanner sc = new Scanner(System.in);
            String tb_name = sc.next();
            HTable table = new HTable(configuration,TableName.valueOf(tb_name));
            if(admin.tableExists(TableName.valueOf(tb_name))) {
                System.out.println("please input the rowkey1");
                String r01 = sc.next();
                Put put1 = new Put(Bytes.toBytes(r01));
                System.out.println("please input the cf1");
                String cf01 = sc.next();
                System.out.println("please input the c1");
                String c01 = sc.next();
                System.out.println("please input the v1");
                String v01 = sc.next();
                System.out.println("please input the c2");
                String c02 = sc.next();
                System.out.println("please input the v2");
                String v02 = sc.next();
                System.out.println("please input the cf2");
                String cf02 = sc.next();
                System.out.println("please input the c3");
                String c03 = sc.next();
                System.out.println("please input the v3");
                String v03 = sc.next();
                System.out.println("please input the c4");
                String c04 = sc.next();
                System.out.println("please input the v4");
                String v04 = sc.next();
                put1.add(Bytes.toBytes(cf01), Bytes.toBytes(c01), Bytes.toBytes(v01));
                put1.add(Bytes.toBytes(cf01), Bytes.toBytes(c02), Bytes.toBytes(v02));
                put1.add(Bytes.toBytes(cf02), Bytes.toBytes(c03), Bytes.toBytes(v03));
                put1.add(Bytes.toBytes(cf02), Bytes.toBytes(c04), Bytes.toBytes(v04));
                //table.put(put);//时间戳不同
                //System.out.println("inserted record eid01 to table employee done");
                System.out.println("please input the rowkey2");
                String r02 = sc.next();
                Put put2 = new Put(Bytes.toBytes(r02));
                System.out.println("please input the v1");
                String v001 = sc.next();
                System.out.println("please input the v2");
                String v002 = sc.next();
                System.out.println("please input the v3");
                String v003 = sc.next();
                System.out.println("please input the v4");
                String v004 = sc.next();
                put2.add(Bytes.toBytes(cf01), Bytes.toBytes(c01), Bytes.toBytes(v001));
                put2.add(Bytes.toBytes(cf01), Bytes.toBytes(c02), Bytes.toBytes(v002));
                put2.add(Bytes.toBytes(cf02), Bytes.toBytes(c03), Bytes.toBytes(v003));
                put2.add(Bytes.toBytes(cf02), Bytes.toBytes(c04), Bytes.toBytes(v004));
                List<Put> putList = new ArrayList<Put>();
                putList.add(put1);
                putList.add(put2);
                table.put(putList);
                System.out.println("Insert List of Put object successfully!");
                //System.out.println("inserted record eid02 to table employee done");
            }
            else{
                System.out.println("Table not exist will create now.....................");
                Configuration configuration1 = HBaseConfiguration.create();
                configuration1.set("hbase.zookeeper.quorum", "niit");
                HBaseAdmin admin1 = new HBaseAdmin(configuration1);
                System.out.println("please input the new table name");
                Scanner scanner = new Scanner(System.in);
                String tb_name_new = sc.next();
                HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(tb_name_new));
                System.out.println("please input the CF1 name");
                String cf11= scanner.next();
                HColumnDescriptor CF1 = new HColumnDescriptor(cf11);
                descriptor.addFamily(CF1);
                System.out.println("please input the CF2 name");
                String cf12= scanner.next();
                HColumnDescriptor CF2 = new HColumnDescriptor(cf12);
                descriptor.addFamily(CF2);
                admin.createTable(descriptor);
                System.out.println("Table: " + tb_name_new +" successfully created");
                System.out.println("Table exist now put data now.....................");
                System.out.println("please input the rowkey1");
                String r11 = scanner.next();
                Put put1= new Put(Bytes.toBytes(r11));
                System.out.println("please input the column1");
                String c11 = scanner.next();
                System.out.println("please input the value1");
                String v11 = scanner.next();
                System.out.println("please input the column2");
                String c12 = scanner.next();
                System.out.println("please input the value2");
                String v12 = scanner.next();
                System.out.println("please input the column3");
                String c13 = scanner.next();
                System.out.println("please input the value3");
                String v13 = scanner.next();
                System.out.println("please input the column4");
                String c14 = scanner.next();
                System.out.println("please input the value4");
                String v14 = scanner.next();
                put1.add(Bytes.toBytes(cf11), Bytes.toBytes(c11), Bytes.toBytes(v11));
                put1.add(Bytes.toBytes(cf11), Bytes.toBytes(c12), Bytes.toBytes(v12));
                put1.add(Bytes.toBytes(cf12), Bytes.toBytes(c13), Bytes.toBytes(v13));
                put1.add(Bytes.toBytes(cf12), Bytes.toBytes(c14), Bytes.toBytes(v14));

                System.out.println("please input the rowkey2");
                String r2 = scanner.next();
                Put put2 = new Put(Bytes.toBytes(r2));
                System.out.println("please input the value1");
                String v21 = scanner.next();
                System.out.println("please input the value2");
                String v22 = scanner.next();
                System.out.println("please input the value3");
                String v23 = scanner.next();
                System.out.println("please input the value4");
                String v24 = scanner.next();
                put2.add(Bytes.toBytes(cf11), Bytes.toBytes(c11), Bytes.toBytes(v21));
                put2.add(Bytes.toBytes(cf11), Bytes.toBytes(c12), Bytes.toBytes(v22));
                put2.add(Bytes.toBytes(cf12), Bytes.toBytes(c13), Bytes.toBytes(v23));
                put2.add(Bytes.toBytes(cf12), Bytes.toBytes(c14), Bytes.toBytes(v24));
                List<Put> putList = new ArrayList<Put>();
                putList.add(put1);
                putList.add(put2);
                table.put(putList);
                System.out.println("Insert List of Put object successfully!");
            }
    }

    //插入数据2 循环
    public static  void put() throws IOException{
        Configuration configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum", "niit");
        HBaseAdmin admin = new HBaseAdmin(configuration);
        System.out.println("please input the table name");
        Scanner sc = new Scanner(System.in);
        String tb_name = sc.next();
        HTable table = new HTable(configuration,TableName.valueOf(tb_name));
        List<Put> puts = new ArrayList<>();
        System.out.println("please input the row number");
        Scanner r = new Scanner(System.in);
        int ro = r.nextInt();
        for (int i = 1; i <= ro; i++) {
            byte[] row = Bytes.toBytes("row" + i);
            Put put = new Put(row);
            byte[] columnFamily = Bytes.toBytes("data");
            byte[] qualifier = Bytes.toBytes(String.valueOf(i));
            byte[] value = Bytes.toBytes("value" + i);
            put.addColumn(columnFamily, qualifier, value);
            puts.add(put);
        }
        table.put(puts);
        System.out.println("ok");
    }
    //过滤数据
        public static void GetData() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HTable table = new HTable(configuration,"employee");
            Get get = new Get(Bytes.toBytes("eid01"));
            //get.addColumn(Bytes.toBytes("personal"),Bytes.toBytes("name"));
            Result result = table.get(get);
            for(KeyValue keyvalue : result.raw()){
                System.out.println("Row Key -->" + new String(keyvalue.getRow()));
                System.out.println("Column Family -->" + new String(keyvalue.getFamily()));
                System.out.println("Qualifier -->" + new String(keyvalue.getQualifier()));
                System.out.println("TimeStamp -->" + keyvalue.getTimestamp());
                System.out.println("Value -->" + new String(keyvalue.getValue()));
                System.out.println();
        }
    }


    //扫描表格内容
        public static void Scan() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            System.out.println("please input the table name");
            Scanner sc = new Scanner(System.in);
            String tb_name = sc.next();
            long rowCount = 0;
            HTable table = new HTable(configuration,TableName.valueOf(tb_name));
            if(admin.tableExists(TableName.valueOf(tb_name))) {
                Scan scan = new Scan();
                Scan scan1 = new Scan();
                ResultScanner results = table.getScanner(scan);
                scan1.setFilter(new FirstKeyOnlyFilter());
                ResultScanner resultScanner = table.getScanner(scan1);
                for (Result result : resultScanner) {
                    rowCount += result.size();
                }
                System.out.println("----------------------------------------------Get all records-------------------------------------------\n");
                System.out.println("ROW                                 COLUMN+CELL");
                for (Result result : results) {
                    for (KeyValue keyValue : result.raw()) {
                        System.out.print(new String(keyValue.getRow()) + ",                              ");
                        System.out.print("column=" + new String(keyValue.getFamily()));
                        System.out.print(":" + new String(keyValue.getQualifier()) + ", ");
                        System.out.print("timeStamp=" + keyValue.getTimestamp() + ", ");
                        System.out.print("value=" + new String(keyValue.getValue()));
                        System.out.println();
                    }
                }
                System.out.println(rowCount+" row(s) ");
                System.out.println("------------------------------------------------finish--------------------------------------------------");
            }
            else {
                System.out.println("Table: " +tb_name+" is not exist ! please change the name and try again");
            }
        }

    //显示所有表格
        public static void ListTables() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            HTableDescriptor[] descriptors = admin.listTables();
            for(int x=0 ; x<descriptors.length;x++){
                System.out.println(descriptors[x].getNameAsString());
            }
        }


    //删除表
        public static void dropTable() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            System.out.println("please input the table name");
            Scanner sc = new Scanner(System.in);
            String tb_name = sc.next();
            if (admin.tableExists(TableName.valueOf(tb_name))) {
                admin.disableTable(tb_name);
                admin.deleteTable(tb_name);
                System.out.println("table " + tb_name + " delete successfully!");
            } else {
                System.out.println("table " + tb_name + " not exist!");
            }
        }

    //表格失效
        public static void disableTable() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            try {
                System.out.println("please enter the table you want disable");
                Scanner scan = new Scanner(System.in);
                String tb_name = scan.next();
                admin.disableTable(tb_name);
                System.out.println(tb_name + " is disable now");
            }
            catch (IOException e) {
                e.printStackTrace();
                System.out.println("table is already disabled please try other table");
            }

        }

    //表格还原
        public static void enableTable() throws IOException {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            try {
                System.out.println("please enter the table you want enable");
                Scanner scan = new Scanner(System.in);
                String tb_name = scan.next();
                admin.enableTable(tb_name);
                System.out.println(tb_name + " is enable now");
            }
            catch (IOException e) {
                e.printStackTrace();
                System.out.println("table is already enabled please try other table");
            }

        }

    //删除数据
        public static void DeleteData() throws IOException {
            Configuration configuration = HBaseConfiguration.create();/
            configuration.set("hbase.zookeeper.quorum", "niit");
            HTable table = new HTable(configuration,"company");
            Delete delete = new Delete(Bytes.toBytes("004"));
            delete.deleteColumn(Bytes.toBytes("address"),Bytes.toBytes("country"));
            delete.deleteColumn(Bytes.toBytes("employee"),Bytes.toBytes("city"));
            table.delete(delete);
            System.out.println("company:name for row 004 deleted");
        }

    //退出hbase shell
        public static void ExitHbase_Shell() throws IOException{
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "niit");
            HBaseAdmin admin = new HBaseAdmin(configuration);
            admin.shutdown();
            System.out.println("shut down now");
        }
}




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Agatha方艺璇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值