Hbase常用命令
进入hbase 控制台
hbase shell
在HBase插入数据时,先输入数据的格式为rowkey => info => column => value
rowkey:行键,唯一且不重复
info:列族(数量一般不超过3个)
column:列(在列族下,一个列族下可有许多个列)
value:值
timestamp:时间戳
cell:单元格
表的基本结构如图::
二、HBase的常用命令行
1.查看服务器状态
status 'hd1-1'
2.查看当前用户/帮助
whoami/help
3.查看当前所有的表/命名空间
list
list_namespace
4.创建一张表(一张表名为user、有两个列族分别为info1和info2)
create 'user','info1','info2'
5.扫描一张表
scan ‘user'
6.向表中插入数据(向user表的001行键、info列族中插入名为name的列,值为Dilireba)
put 'user','001','info1:name','Dilireba'
7.筛选数据(startrow、stoprow)
scan 'user',{STARTROW => '001'}
8.查看表结构
describe 'user'
9.更变表信息,修改版本号
alter 'user',{NAME => 'info1',VERSIONS => '3'}
注释:版本号的意思是一个数据可以存在的版本数,比如user表的info1列族版本versions=3,代表该列族下的数据最多可以存在三个版本,如info1:name=Dilireba,然后在info1:name插入新数据为Yangmi,查看时显示为Yangmi,但是Dilireba仍然存在,可以通过时间戳来查看。
10.删除一张表(先弃用表,在删除表)/命名空间
disable 'user'
drop 'user' /
drop '命名空间'
11.删除一列数据/一列族数据
delete 'user','001','info:name'
delete 'user','001'
12.清空表
truncate 'user'
13.查看表的行数(rowkey的数量)
count 'user'
14.查看指定的rowkey的值
get 'user','001'
只读取一条信息(用于查看表结构用)
scan 'mes_orgdata:pmaunew', {'LIMIT' => 1}
1、介绍
在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分。Apache HBase从0.98.0, 0.95.2两个版本开始支持namespace级别的授权操作,HBase全局管理员可以创建、修改和回收namespace的授权。
2、namespace
HBase系统默认定义了两个缺省的namespace
hbase:系统内建表,包括namespace和meta表
default:用户建表时未指定namespace的表都创建在此
创建namespace:
hbase(main):010:0* create_namespace 'datamanage'
查看namespace:
hbase(main):011:0> describe_namespace 'datamanage'
DESCRIPTION
{NAME =>'datamanage'}
列出所有namespace:
hbase(main):012:0> list_namespace
NAMESPACE
datamanage
default
hbase
在namespace下创建表:
hbase(main):013:0> create 'datamanage:testtable','colfam01'
=> Hbase::Table - datamanage:testtable
查看namespace下的表
hbase(main):015:0> list_namespace_tables 'datamanage'
TABLE
testtable
删除namespace:
hbase(main):016:0> drop_namespace 'datamanage'
ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace datamanage has 1 tables
at org.apache.hadoop.hbase.master.TableNamespaceManager.remove(TableNamespaceManager.java:200)
at org.apache.hadoop.hbase.master.HMaster.deleteNamespace(HMaster.java:2488)
at org.apache.hadoop.hbase.master.MasterRpcServices.deleteNamespace(MasterRpcServices.java:489)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:55730)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2178)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
at java.lang.Thread.run(Thread.java:745)
Here is some help for this command:
Drop the named namespace. The namespace must be empty.
#删除表
hbase(main):017:0> disable 'datamanage:testtable'
hbase(main):018:0> drop 'datamanage:testtable'
#删除datamanage命名空间
hbase(main):019:0> drop_namespace 'datamanage'
java API:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
/**
* Hbase namespace
*/
public class NameSpaceInHbase {
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
//管理员对象
Admin admin = connection.getAdmin();
//创建命名空间
NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("datastrom3").build();
admin.createNamespace(namespaceDescriptor);
//表名
TableName tableName = TableName.valueOf("datastrom3","testtable3");
//表描述
HTableDescriptor desc = new HTableDescriptor(tableName);
//列族描述datastrom
HColumnDescriptor coldef = new HColumnDescriptor(Bytes.toBytes("colfam3"));
//表加入列族
desc.addFamily(coldef);
//创建表
admin.createTable(desc);
//校验表是否可用
boolean avail = admin.isTableAvailable(tableName);
System.out.println("Table available: "+avail);
}
}
preHell:
========
nextShell:
hbase(main):005:0> list
TABLE
testtable2
user
2 row(s) in 0.0070 seconds
java output:
=====
Table available: true
shell:
=====
hbase(main):022:0> list
TABLE
datastrom3:testtable3
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南