java代码对hbase各种命令的体现

it2026-08-28  3

package com.shujia.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.*; import org.apache.hadoop.hbase.util.Bytes; import org.junit.Before; import org.junit.Test; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; public class Demo2Test { private Connection connection; @Before public void init() { Configuration configuration = new Configuration(); configuration.set("hbase.zookeeper.quorum","master"); try { connection = ConnectionFactory.createConnection(configuration); System.out.println("创建连接成功"); } catch (IOException e) { e.printStackTrace(); } } @Test public void Createtable() throws IOException { //获取管理对象,和hmaster建立连接 Admin admin = connection.getAdmin(); //创建表描述对象 HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf("test2")); //增加列簇 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("info".getBytes()); //可以设置列簇的属性 //hColumnDescriptor.setTimeToLive(5); hColumnDescriptor.setVersions(1,10); hTableDescriptor.addFamily(hColumnDescriptor); //创建表 admin.createTable(hTableDescriptor); } @Test public void dropTable() throws Exception{ //获取管理对象,和hMaster建立连接 Admin admin = connection.getAdmin(); //禁用表 admin.disableTable(TableName.valueOf("test2")); admin.deleteTable(TableName.valueOf("test2")); } @Test public void put() throws IOException { /** * 插入数据 * */ //获取表对象 Table table = connection.getTable(TableName.valueOf("test2")); //创建put对象 Put put = new Put("001".getBytes()); //指定列和列值 put.addColumn("info".getBytes(),"name".getBytes(),"zhangsan".getBytes()); put.addColumn("info".getBytes(),"age".getBytes(),"23".getBytes()); //插入数据 table.put(put); //断开和RS的连接 table.close(); } @Test public void putStudent() throws IOException { //create 'student','info' Table table = connection.getTable(TableName.valueOf("student")); //读取本地学生数据 BufferedReader br = new BufferedReader(new FileReader("data/students.txt")); String line; ArrayList<Put> puts = new ArrayList<Put>(); while((line=br.readLine())!=null){ String[] split = line.split(","); String id = split[0]; String name = split[1]; String age = split[2]; String gender = split[3]; String clazz = split[4]; /** * 以学号作为rowkey * 1.唯一 * 2.后面课通过学号查询学生信息 */ Put put = new Put(id.getBytes()); put.addColumn("info".getBytes(),"name".getBytes(),name.getBytes()); put.addColumn("info".getBytes(),"age".getBytes(),age.getBytes()); put.addColumn("info".getBytes(),"gender".getBytes(),gender.getBytes()); put.addColumn("info".getBytes(),"clazz".getBytes(),clazz.getBytes()); puts.add(put); } //批量插入数据 table.put(puts); } @Test public void get() throws IOException { Table table = connection.getTable(TableName.valueOf("student")); Get get = new Get("1500100004".getBytes()); //指定查询的列,如果不指定,默认返回所有列 // get.addColumn("info".getBytes(),"name".getBytes()); Result result = table.get(get); //从result中获取rowkey String id = Bytes.toString(result.getRow()); //解析result String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes())); String age = Bytes.toString(result.getValue("info".getBytes(), "age".getBytes())); String gender = Bytes.toString(result.getValue("info".getBytes(), "gender".getBytes())); String clazz = Bytes.toString(result.getValue("info".getBytes(), "clazz".getBytes())); System.out.println(id+"\t"+name+"\t"+age+"\t"+gender+"\t"+clazz); } @Test public void scan() throws IOException { Table table = connection.getTable(TableName.valueOf("student")); Scan scan = new Scan(); scan.setLimit(10); // scan.withStartRow("001".getBytes()); // scan.withStopRow("0010".getBytes()); //全表扫描 //ResultScanner 多条数据 ResultScanner scanner = table.getScanner(scan); Result result; while((result=scanner.next())!=null){ //从result中获取rowkey String id = Bytes.toString(result.getRow()); //解析result String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes())); String age = Bytes.toString(result.getValue("info".getBytes(), "age".getBytes())); String gender = Bytes.toString(result.getValue("info".getBytes(), "gender".getBytes())); String clazz = Bytes.toString(result.getValue("info".getBytes(), "clazz".getBytes())); System.out.println(name+"\t"+age+"\t"+gender+"\t"+clazz); } } }
最新回复(0)