目录
一:创建连接
public class API1 {
public static void main(String[] args) throws IOException {
//创建一个配置
Configuration conf = HBaseConfiguration.create();
//配置zk地址,通过zk找到hbase(根据自己的配置进行修改)
conf.set("hbase.zookeeper.quorum", "master:2181,node1:2181,node2:2181");
//创建连接
Connection connection = ConnectionFactory.createConnection(conf);
//创建表
Admin admin = connection.getAdmin();
//list操作
TableName[] tableNames = admin.listTableNames();
for (TableName tableName : tableNames) {
System.out.println(tableName);
}
//put
Table testapi = connection.getTable(TableName.valueOf("testapi"));
//给rk
Put put = new Put("0001".getBytes());
//插入一个cell
Put put1 = put.addColumn("cf1".getBytes(), "name".getBytes(), "张三".getBytes());
Put put2 = put.addColumn("cf1".getBytes(), "age".getBytes(), "22".getBytes());
Put put3 = put.addColumn("cf1".getBytes(), "sex".getBytes(), "男".getBytes());
testapi.put(put);
//get
admin.close();
connection.close();
}
}
二:插入一条数据和获取一条数据
//获取表
Table testapi = connection.getTable(TableName.valueOf("testapi"));
//给rk
Put put = new Put("0001".getBytes());
//插入一个cell
Put put1 = put.addColumn("cf1".getBytes(), "name".getBytes(), "lisi".getBytes());
Put put2 = put.addColumn("cf1".getBytes(), "age".getBytes(), "21".getBytes());
Put put3 = put.addColumn("cf1".getBytes(), "sex".getBytes(), "man".getBytes());
testapi.put(put);
//获得表
Table testapi = connection.getTable(TableName.valueOf("testapi"));
//获取那一条数据
Get get = new Get("0001".getBytes());
Result result = testapi.get(get);
//获取cell
byte[] row = result.getRow();
System.out.println(row);
System.out.println(Bytes.toString(row));
byte[] value = result.getValue("cf1".getBytes(), "name".getBytes());
System.out.println(value);
System.out.println(Bytes.toString(value));
三:创建表
admin = connection.getAdmin();
// 获得表结构
HTableDescriptor student = new HTableDescriptor(TableName.valueOf("student"));
//创建列簇
HColumnDescriptor info = new HColumnDescriptor("info");
//将列簇加入表
student.addFamily(info);
//创建表
admin.createTable(student);
四:删除表
admin = connection.getAdmin();
TableName test = TableName.valueOf("test");
if(admin.tableExists(test)){//判断一下表是否存在,存在就先disablle一下然后删除
admin.disableTable(test);
admin.deleteTable(test);
}
五:成批插入数据
//读取学生信息写入hbase (当前模块下学生数据)
ArrayList<Put> strings = new ArrayList<Put>();
int b=10;
TableName student = TableName.valueOf("stu_split");
Table table = connection.getTable(student);
BufferedReader br = new BufferedReader(new FileReader("data/students.txt"));
String line=null;
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];
Put put = new Put(id.getBytes());
byte[] info = "info".getBytes();
put.addColumn(info,"name".getBytes(),name.getBytes());
put.addColumn(info,"age".getBytes(),age.getBytes());
put.addColumn(info,"gender".getBytes(),gender.getBytes()) ;
put.addColumn(info,"clazz".getBytes(),clazz.getBytes());
//一次写入10条
strings.add(put);
if(strings.size()==b){
table.put(strings);
strings.clear();
}
}
//判断是否写完把剩下的写入
if(!strings.isEmpty()){
table.put(strings);
}
六:查看数据
1:scan
Table student = connection.getTable(TableName.valueOf("student"));
Scan scan = new Scan();
Scan scan1 = scan.withStartRow("1500100100".getBytes());
// Scan scan2 = scan.withStopRow("1500100110".getBytes());
ResultScanner scanner = student.getScanner(scan);
for (Result result : scanner) {
String id = Bytes.toString(result.getRow());
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+" "+name+" "+age+" "+" "+gender+" "+clazz);
}
2:一个cell一个cell读取
Table student = connection.getTable(TableName.valueOf("student"));
Scan scan = new Scan();
// Scan scan1 = scan.withStartRow("1500100100".getBytes());
scan.setLimit(10);
// Scan scan2 = scan.withStopRow("1500100110".getBytes());
ResultScanner scanner = student.getScanner(scan);
for (Result result : scanner) {
String s1 = Bytes.toString(result.getRow());
System.out.print(s1+" ");
List<Cell> cells = result.listCells();
for (Cell cell : cells) {
String s = Bytes.toString(CellUtil.cloneValue(cell));
System.out.print(s+" ");
}
System.out.println();
}
七:注意
后面对Hbase的操作都是基于前面连接的