HbaseApI 对表 增,删,改,查
一, Hbase数据库命令合集
./start-hbase.sh :启动hbase命令
./stop-hbase.sh :关闭hbase命令
./bin/hbase-daemon.sh start master:启动master节点
bin/hbase-daemon.sh start regionserver:启动regionserver,集群之间要注意集群是否时间同步
bin/hbase shell:进入shell客户端
list:查看当前数据库中的表;
create +表名+列族名:创建表;
put 表名 rowkey(行名称) +列族名下的列(‘info:sex’)+value:添加或者更新表格:
scan +表名:查看表;
desc +表名:查看表的结构;
get+表名+行名称:查看指定的行;
count +表名:统计行数;
deleteall +表名+行名称:删除指定行的全部数据;
delete +表名+列族名下的列(‘info:sex’):删除指定元素
disable +表:下线表格;
truncate +表:清空表格:(清空之前必须,disable 一下)
drop +表:删除表:(删除之前必须,disable 一下)提示:如果直
接 drop 表,会报错:ERROR: Table student is enabled. Disable it first.
alter +表名+{NAME=>列名,VERSIONS=>3}:更改数据可以存放三个版本;
scan +表+{RAW=>TRUE,VERSIONS=>10}:查询全部内容
二,HbaseApi 操作
HbaseApi 环境搭建
-
打开ideal创建一个maven项目
-
配置hbase pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>HbaseTest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
</project>
hbase静态代码块(公共使用部分)
private static Connection connection=null;
private static Admin admin=null;
static {
try {
//创建hbased的连接
Configuration configuration = HBaseConfiguration.create();
//连接的主机
configuration.set("hbase.zookeeper.quorum","niit02");
//连接端口
connection= ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
System.out.println("连接不上主机");
}
}
//关闭的方法
public static void close(){
if(admin!=null){
try {
admin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (connection!=null){
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Hbase 创建命名空间
public static void create_NameSpace(String ns){
NamespaceDescriptor build = NamespaceDescriptor.create(ns).build();
try {
admin.createNamespace(build);
} catch (IOException e) {
e.printStackTrace();
}
}
Hbase判断表是否存在
//检查表是否存在
public static boolean ixTableExist(String tableName) throws IOException {
boolean exists= admin.tableExists(TableName.valueOf(tableName));
return exists;
}
Hbase创建表
//创建表
public static void cratetTable(String tableName,String... cfs) throws IOException {
//判断是否存在列族
if(cfs.length<=0){
System.out.println("设置列族");
return;
}
//判断表是否存在
if(ixTableExist(tableName)){
System.out.println(tableName+"表已经有咯");
return;
}
//创建表描述器
HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
for (String cf : cfs) {
//创建列族描述器
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
hTableDescriptor.addFamily(hColumnDescriptor);
}
admin.createTable(hTableDescriptor);
}
Hbase删除表
//删除表
public static void dropTablle(String tableName) throws IOException {
if(!ixTableExist(tableName)){
System.out.println("表不存在");
return;
}
//删除表之前要下线表格
admin.disableTable(TableName.valueOf(tableName));
//删除表
admin.deleteTable(TableName.valueOf(tableName));
}
Hbase 删除数据
//删除数据
public static void deleteData(String tableName,String rowKey,String cf,String cn) throws IOException {
//获取表对象
Table table = connection.getTable(TableName.valueOf(tableName));
//构建删除对象
Delete delete = new Delete(Bytes.toBytes(rowKey));
table.delete(delete);
table.close();
}
Hbase 查询表内容
//查询表格;
public static void scanTable(String tableName) throws IOException {
//获取表
Table table = connection.getTable(TableName.valueOf(tableName));
//获取scan对象
//查询范围
Scan scan = new Scan(Bytes.toBytes("1001"),Bytes.toBytes("1002"));
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
for (Cell cell : result.rawCells()) {
System.out.println("Cf"+Bytes.toString(CellUtil.cloneFamily(cell))
+"cn"+Bytes.toString(CellUtil.cloneQualifier(cell))+"value"+
Bytes.toString(CellUtil.cloneValue(cell)));
}
table.close();
}
}
Hbase 插入表格数据
//插入表
public static void putData(String tableName,String rowKey,String cf,String cn,String value) throws IOException {
//获取表对象
Table table = connection.getTable(TableName.valueOf(tableName));
//创建put对象
Put put = new Put(Bytes.toBytes(rowKey));
//put对象赋值
put.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn),Bytes.toBytes(value));
//插入数据
table.put(put);
table.close();
}
Hbase 主方法
public static void main(String[] args) throws IOException {
//检查表是否存在
//System.out.println("表"+ixTableExist("t1"));
//创建表
//cratetTable("stu1" +"info1","info2");
//admin.disableTable(TableName.valueOf("stu1info1"));
//创建命名空间
//create_NameSpace("hh");
//dropTablle("stu1info1");
//插入数据
//putData("stu","1001","info1","name","male");
//查询数据
//scanTable("stu" );
deleteData("stu","1001","info1","name");
close();
}