pom.xml
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.6</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.6</version>
</dependency>
</dependencies>
namespace的操作
package com.al.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import java.io.IOException;
/**
* hbase 的 namespace操作.
* 1、ddl操作使用Admin对象
* 2、dml操作使用Table对象
*
* 步骤:
* 1、获取conf对象并配置zk地址
* 2、获取admin或者table对象
* 3、使用admin或者table进行操作 -----核心
* 4、关闭admin或者table对象
*/
public class Demo01_NameSpace {
public static void main(String[] args) throws IOException {
//1、获取conf对象 --> HbaseConfiguration.create()
Configuration conf = new Configuration();
//配置zk的地址
conf.set("hbase.zookeeper.quorum","qianfeng01:2181,qianfeng02:2181,qianfeng03:2181");
//2、获取admin对象
HBaseAdmin admin = new HBaseAdmin(conf);
//3、使用admin进行操作
NamespaceDescriptor ns2= NamespaceDescriptor.create("ns2").build();
//提交创建ns
//admin.createNamespace(ns2);
//列出ns
NamespaceDescriptor[] namespaceDescriptors=admin.listNamespaceDescriptors();
System.out.println("所有的namespaces:");
for (NamespaceDescriptor ns : namespaceDescriptors) {
System.out.println(ns.getName());
//列出命名空间下的表
HTableDescriptor[] hTableDescriptors=admin.listTableDescriptorsByNamespace("ns1");
System.out.println("ns1所有的表");
for (HTableDescriptor hd : hTableDescriptors) {
System.out.println(hd.getTableName());
}
//删除ns
admin.deleteNamespace("ns2");
//4、关闭admin对象
admin.close();
}
}
}
HbaseUtil
package com.al.util;
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.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.List;
public class HbaseUtil {
static Configuration conf = null;
static {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","qianfeng01:2181,qianfeng02:2181,qianfeng03:2181");
}
//获取hbase的admin连接
public static Admin getAdmin(){
Admin admin=null;
try {
Connection conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
return admin;
}
public static Table getTable(String tableName){
//new一个table对象
HTable hTable=null;
try {
hTable = new HTable(conf, Bytes.toBytes(tableName));
} catch (IOException e) {
e.printStackTrace();
}
return hTable;
}
//关闭对象
public static void close(Admin admin,Table table){
if (admin != null){
try {
admin.close();
} catch (IOException e) {
// do nothing
}
}
if (table != null){
try {
table.close();
} catch (IOException e) {
// do nothing
}
}
}
/**
* 迭代数据
* @param scanner
* @param rst
*/
public static void scanData(ResultScanner scanner,Result rst){
if (scanner != null){
for (Result result: scanner){
listCells(result);
}
}else if (rst != null){
listCells(rst);
}
}
//列出cell
private static void listCells(Result result) {
List<Cell> cells = result.listCells();
for (Cell cell : cells){
System.out.println(Bytes.toString(CellUtil.cloneFamily(cell))+":"
+ Bytes.toString(CellUtil.cloneQualifier(cell))+"\t"
+Bytes.toString(CellUtil.cloneValue(cell)));
}
}
}
table操作
package com.al.hbase;
import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class Demo02_table {
public static void main(String[] args) throws IOException {
//获取admin
Admin admin= HbaseUtil.getAdmin();
//操作
HTableDescriptor tb= new HTableDescriptor(TableName.valueOf("tb"));
//列簇
HColumnDescriptor data=new HColumnDescriptor(Bytes.toBytes("data"));
HColumnDescriptor info=new HColumnDescriptor(Bytes.toBytes("info"));
//设置列簇的属性
data.setBlockCacheEnabled(true);
data.setBloomFilterType(BloomType.ROW);
data.setMaxVersions(3);
//将列簇添加到表上
tb.addFamily(data);
tb.addFamily(info);
//tb的属性设置
tb.setCompactionEnabled(true);
tb.setDurability(Durability.SKIP_WAL);
//跳过wal
// 提交创建表
//admin.createTable(tb);
//提交创建预分区的table
/*byte [][] splits = {new byte[10],new byte[20],new byte[30]};
admin.createTableAsync(tb,splits);*/
//列出表
/*System.out.println("所有表:");
TableName[] tableNames = admin.listTableNames();
for (TableName tbs:tableNames){
System.out.println(Bytes.toString(tbs.getName()));
}*/
//添加列簇
/*HColumnDescriptor data1 = new HColumnDescriptor(Bytes.toBytes("data1"));
//设置列簇的属性
data1.setBlockCacheEnabled(true);
data1.setBloomFilterType(BloomType.ROW);
data1.setMaxVersions(3);
admin.addColumn(TableName.valueOf("tb"),data1);
//删除列簇 - 1.2.1删除
admin.removeFamily();
*/
//删除表
if (admin.tableExists(TableName.valueOf("tb"))){
admin.disableTable(TableName.valueOf("tb"));
admin.disableTable(TableName.valueOf("tb"));
}
//关闭
HbaseUtil.close(admin,null);
}
}
存储数据
package com.al.hbase;
import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
public class Demo03_DataPut {
public static void main(String[] args) throws IOException {
//获取table对象
Table tb= HbaseUtil.getTable("tb");
//构建put对象
/*Put put = new Put(Bytes.toBytes("rk3"));
//添加列
put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("name"),Bytes.toBytes("ls"));
put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("age"),Bytes.toBytes("14"));
put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("sex"),Bytes.toBytes("2"));
*/
//构建put对象
ArrayList<Put> puts = new ArrayList<>();
for(int i=3;i <200;i++) {
Put put = new Put(Bytes.toBytes("rk"+i));
put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("name"),Bytes.toBytes("ls"+i));
put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("age"),Bytes.toBytes(new Random(100)+""));
put.addColumn(Bytes.toBytes("data"),Bytes.toBytes("sex"),Bytes.toBytes("2"));
puts.add(put);
}
//提交
tb.put(puts);
//关闭table
HbaseUtil.close(null,tb);
}
}
数据查询get
package com.al.hbase;
import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class Demo04_DataGet {
public static void main(String[] args) throws IOException {
//获取table对象
Table tb = HbaseUtil.getTable("tb");
//构建Get对象
Get get = new Get(Bytes.toBytes("rk1"));
Result result = tb.get(get);
//取某个family的数据
/*NavigableMap<byte[], byte[]> data = result.getFamilyMap(Bytes.toBytes("data"));
for (NavigableMap.Entry<byte[], byte[]> map : data.entrySet()){
System.out.println(Bytes.toString(map.getKey())+"\t"+Bytes.toString(map.getValue()));
}*/
//获取数据
HbaseUtil.scanData(null,result);
//关闭table
HbaseUtil.close(null,tb);
}
}
数据查询
package com.al.hbase;
import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class Demo05_DataScan {
public static void main(String[] args) throws IOException {
//获取table对象
Table tb = HbaseUtil.getTable("tb");
//构建Get对象
Scan scan = new Scan();
//指定起始行
scan.setStartRow(Bytes.toBytes("rk2"));
//scan.setMaxResultSize(5); //字节数
scan.setStopRow(Bytes.toBytes("rk3"));
ResultScanner scanner=tb.getScanner(scan);
//resultscanner的数据需要循环出result,然后再循环cell
HbaseUtil.scanData(scanner,null);
//关闭table
HbaseUtil.close(null,tb);
}
}
数据删除
package com.al.hbase;
import com.al.util.HbaseUtil;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class Demo06_DeleteScan {
public static void main(String[] args) throws IOException {
//获取table对象
Table tb = HbaseUtil.getTable("tb");
//delete对象
Delete delete=new Delete(Bytes.toBytes("rk2"));
//删除整行
tb.delete(delete);
//删除列
delete.addColumn(Bytes.toBytes("data"),Bytes.toBytes("name"));
tb.delete(delete);
//删除整个列簇的数据
delete.addFamily(Bytes.toBytes("info"));
tb.delete(delete);
//清空整张表
/*Admin admin = HbaseUtil.getAdmin();
admin.truncateTable(TableName.valueOf("tb"),true);*/
//关闭table
HbaseUtil.close(null,tb);
}
}
|