Hbase的shell命令(详细)

一、help

1.help 

显示命名的分组情况

 

2.help '命令名称'

查看命令的具体使用,包括命令的作用和用法。

举例:help 'list'

二、general 组(普通命令组) 

     命令                描述                                                     格式

三、命名空间(namespace)

命名空间是HBase中的一个逻辑概念,用于对表进行逻辑分组,类似于关系型数据库中的数据库概念。

1.创建命名空间:

create_namespace  '命名空间名称'

2.列举命名空间

list_namespace

3.获取命名空间描述

describe_namespace '命名空间名称'

4.查看命名空间下的所有表

list_namespace_tables '命名空间名称'

5.删除命名空间

drop_namespace '命名空间名称'

四、DDL组(与表相关的命令)

1. 创建表create

在创建一个表的时候,列族必须作为模式定义的一部分预先给出,而列族是支持动态扩展的,也就是列族成员可以随后按需加入,既创建表时只需要指定列族名称,不需要指定列名

语法1:
create '表名', {NAME => '列簇名1'}, {NAME => '列簇名2'}, {NAME => '列簇名3'}

注意:指定命名空间下创建表(命名空间类似于数据库,相当于指定某数据库下创建表)
create '命名空间:表名' '列簇名'

语法2:
create '表名', '列族名1', '列簇名2', '列簇名3'

(此种方式是上面的简写方式,但使用上面方式可以为列族指定更多的属性,如VERSIONS、TTL、BLOCKCACHE、CONFIGURATION等属性,就是下面的语法3)

语法3:

create '表名', {NAME => '列簇名1', VERSIONS => 版本号, TTL => 过期时间, BLOCKCACHE => true}


语法1示例:
create 'tbl_user', 'info', 'detail'

语法3示例:
create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true},{NAME => 'f2',..}

2.修改(添加、删除)表结构Schema alter

2.1添加一个列簇

语法:

alter '表名', '列族名'
示例:
alter  'table1', 'cf2'

2.2删除一个列簇

语法 :
alter '表名', {NAME=> '列族名', METHOD=> 'delete'}

示例:
alter 'tbl_user', {NAME=> 'address', METHOD=> 'delete'}

2.3修改列簇的属性

(可以修改列簇的VERSIONS、IN_MEMORY )

语法1:修改表table1的列簇cf1的版本为5

alter 'table1', NAME => 'cf1', VERSIONS => 5

语法2:修改多个列簇,修改cf2为内存,cf3版本号为5

alter 'table1', 'cf1', {NAME => 'cf2', IN_MEMORY => true}, {NAME => 'cf3', VERSIONS => 5}

也可以修改table-scope属性,例如MAX_FILESIZE, READONLY,MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH等。
例如,修改region的最大大小为128MB:
alter 't1', MAX_FILESIZE => '134217728'

3.表的基本操作

3.1获取表的描述

语法:describe '表名'

3.2列举所有表(所有的命名空间下所有的表)

语法:list

3.3查看表是否存在

语法:exists

3.4启用表和禁用表

通过enable和disable来启用/禁用这个表,相应的可以通过is_enabled和is_disabled来检查表是否被禁用

(1)启用表:enable '表名'

(2)查看表是否被启用:is_enabled '表名'

(3)禁用表:disable '表名'

(4)查看表是否被禁用:is_disabled '表名'

3.4.1禁用满足正则表达式的所有表(disable_all )
  • .匹配除“\n”和"\r"之外的任何单个字符

  • *匹配前面的子表达式任意次

# 匹配以t开头的表名
disable_all 't.*'
# 匹配指定命名空间ns下的以t开头的所有表
disable_all 'ns:t.*'
# 匹配ns命名空间下的所有表
disable_all 'ns:.*'

3.4.2启用满足正则表达式的所有表(enable_all )enable_all 't.*'

enable_all 'ns:t.*'
enable_all 'ns:.*'

3.5 修改表可以存储多个版本

语法:alter '表名',NAME=>'列簇名',VERSIONS=>版本数量

3.6 删除表

需要先禁用表,然后再删除表,启用的表是不允许删除的

语法1:删除单张表
disable '表名'
drop '表名'

语法2:删除满足正则表达式的所有表

drop_all 't.*'            //删除t开头的所有表(默认命名空间下)
drop_all 'ns:t.*'       //删除ns命名空间下t开头的所有表
drop_all 'ns:.*'        //删除ns命名空间下的所有表

3.7 获取某个表赋值给一个变量(get_table)

通过 var = get_table ‘表名’  赋值给一个变量对象,然后对象.来调用,就像面向对象编程一样,通过对象.方法来调用,这种方式在操作某个表时就不必每次列举表名了。

3.8 获取rowKey所在的区( locate_region)

语法:locate_region '表名', '行键'

3.9 显示hbase所支持的所有过滤器(show_filters)

过滤器用于get和scan命令中作为筛选数据的条件,类型关系型数据库中的where的作用

五、DML(数据操作组)

1.插入或者修改数据put

语法1:当列族中只有一个列时'列族名:列名'使用'列族名'
put '表名', '行键', '列族名', '列值'

语法2:
put '表名', '行键', '列族名:列名', '列值'

# 示例

# 创建表
create 'tal_users', 'info', 'detail', 'address'

# 插入第一行数据
put 'tal_users', 'rk1001', 'info:id', '1'
put 'tal_users', 'rk1001', 'info:name', '张三'
put 'tal_users', 'rk1001', 'info:age', '28'
put 'tal_users', 'rk1001', 'detail:birthday', '1990-06-26'
put 'tal_users', 'rk1001', 'detail:email', 'abc@163.com'
put 'tal_users', 'rk1001', 'detail:create_time', '2019-03-04 14:26:10'
put 'tal_users', 'rk1001', 'address', '上海市'

#插入第二行数据
put 'tal_users', 'rk1002', 'info:id', '2'
put 'tal_users', 'rk1002', 'info:name', '李四'
put 'tal_users', 'rk1002', 'info:age', '27'
put 'tal_users', 'rk1002', 'detail:birthday', '1990-06-27'
put 'tal_users', 'rk1002', 'detail:email', 'xxx@gmail.com'
put 'tal_users', 'rk1002', 'detail:create_time', '2019-03-05 14:26:10'
put 'tal_users', 'rk1002', 'address', '北京市'


#插入第三行数据
put 'tal_users', 'rk1003', 'info:id', '3'
put 'tal_users', 'rk1003', 'info:name', '王五'
put 'tal_users', 'rk1003', 'info:age', '26'
put 'tal_users', 'rk1003', 'detail:birthday', '1990-06-28'
put 'tal_users', 'rk1003', 'detail:email', 'xyz@qq.com'
put 'tal_users', 'rk1003', 'detail:create_time', '2019-03-06 14:26:10'

put 'tal_users', 'rk1003', 'address', '杭州市'

 
将内存中的数据刷新到表中:

flush 'tal_users'

这样每个列簇下都有数据

注意:每次flush都会将内存中的数据书刷新到表中,但是会新生成一个小文件来存放此数据,因此我们可以使用major_compact '表名'来合并这些小文件

2.全表扫描scan

(效果类似于sql语句中select * from xxx)

2.2查询完整数据

语法1:scan '表名'

以1中插入的数据表为例:

scan 'tal_users'

注意:Table中的所有行都是按照row key的字典排序的

2.3 查询某个列簇数据

语法:
scan '表名', {COLUMN=>'列族名'}

示例:

scan 'tal_users',{COLUMN=>'info'}

2.4 查询某个列簇下的某个列数据

语法:
scan '表名', {COLUMN=>'列族名:列名'}

示例
scan 'tal_users', {COLUMN=>'info:age'}

3.获取数据

语法1:获取一行数据

get '表名', '行键'

示例: get 'tal_users','rk1001'

语法2:获取一行数据中某个列簇的数据

get '表名','行键','列簇名'

示例:get 'tal_users','rk1001','detail' 或get 'tal_users', 'rk1002',{COLUMN =>'detail'}

语法3:获取一行数据中多个列簇的数据

get '表名','行键',['列簇名1','列簇名2'】

示例:

get 'tal_users','rk1001',['info','detail']

语法4:获取某个单元格的数据

get '表名','行键','列簇名:列名'

示例:get 'tal_users','rk1002','detail:birthday' 

语法5:获取某个单元格多个版本的值,默认是按照时间戳降序排序

get '表名', '行键', {COLUMN => '列簇名', VERSIONS => 版本数}

4.删除数据

4.1删除某个列簇中的某个列(delete)

语法:delete '表名', '行键', '列族名:列名'

4.2删除某行数据(deleteall)

语法:deleteall '表名', '行键'

5.清空表数据

语法:truncate '表名'

6.自增与计数器

6.1自增(incr)

语法
incr '表名', '行键', '列族:列名', 步长值

incr 'tal_users','rk1004','info:name',1


# 注意:incr 是对不存在的行键操作,如果行键已经存在会报错,如果使用put修改了incr的值再使用incr也会报错

6.2计数器(get_counter )

# 创建表(点击量:日、周、月)
create 'counters', 'daily', 'weekly', 'monthly'
incr 'counters', '20240415', 'daily:hits', 1          
incr 'counters', '20110101', 'daily:hits', 1

统计表有多少行(统计的是行键的个数)

count '表名'

获取数目
get_counter 'counters', '20110101', 'daily:hits'      

7.修饰词过滤

7.1 COLUMNS(与列簇列名相关)

语法:scan '表名', {COLUMNS => [ '列族名1:列名1', '列族名1:列名2', ...]}

示例:scan 'tal_users',{COLUMNS=> ['info:name','info:id']} 

7.2TIMESTAMP( 指定时间戳)

语法:scan '表名',{TIMERANGE=>[timestamp1, timestamp2]}

注意:区间取得值为[ ,),右边的值取不到    
 

7.3 VERSIONS(版本号)

默认情况下一个列只能存储一个数据,后面如果修改数据就会将原来的覆盖掉,可以通过指定VERSIONS使HBase一列能存储多个值。

示例:

create 'tbl_test', 'columnFamily1'
describe 'tbl_test'

# 修改列族版本号
alter 'tbl_test', { NAME=>'columnFamily1', VERSIONS=>3 }

put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value1'
put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value2'
put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value3'

(1)默认返回最新的一条数据
get 'tbl_test','rowKey1','columnFamily1:column1'

(2)返回2个
get 'tbl_test','rowKey1',{COLUMN=>'columnFamily1:column1', VERSIONS=>2}
(3)返回3个
get 'tbl_test','rowKey1',{COLUMN=>'columnFamily1:column1', VERSIONS=>3}

7.4 STARTROW

ROWKEY起始行。会先根据这个key定位到region,再向后扫描

语法:scan '表名', { STARTROW => '行键名'}

示例:
scan 'tal_users', { STARTROW => 'rk1003'}

7.5 STOPROW

截止到STOPROW行之前的数据,不包括STOPROW这行数据

语法:scan '表名', { STOPROW=> '行键名'}

示例:

scan 'tal_users', { STOPROW=> 'rk1003'}

将 STARTROW与STOPROW结合使用:左闭右开

scan 'tal_users', { STARTROW=>'rk1001',STOPROW=> 'rk1003'}

7.6 LIMIT 

语法1:返回限制的行数(从前往后)

scan '表名', { LIMIT => 行数}

语法2:返回限制的行数(从后往前)

scan '表名',{LIMIT=>行数,REVERSED=>true}

六、FILTER条件过滤器

1、ValueFilter 值过滤器

语法1:binary (等于某个值)
scan '表名', FILTER=>"ValueFilter(=,'binary:列值')"

示例:

scan 'tal_users',FILTER=>"ValueFilter(=,'binary:26')"

语法2:substring(包含某个值)
scan '表名', FILTER=>"ValueFilter(=,'substring:列值')"

示例:

 scan 'tal_users',FILTER=>"ValueFilter(=,'substring:2019')"

2、ColumnPrefixFilter 列名前缀过滤器

语法:
scan '表名', FILTER=>"ColumnPrefixFilter('列名前缀')"

示例:

scan 'tal_users',FILTER=>"ColumnPrefixFilter('a')"

七、与region有关的命令

1.查看表的所有region

list_regions '表名'

2.强制将表切分出来一个region

split '表名','行键'

示例:split 'tal_users','rk1003'

切分前:

切分后:

注意:此时切分后的形成的两个region并不是在同一台机器上,而是一个region在node1,一个在node2,这是因为底层中Hmaster对RegionServer上的region作负载均衡才导致这个现象

3. 查看某一行在哪个region中

语法: locate_region '表名','行键'

4.查看region中的某列簇数据

语法:hbase hfile -p -f 'hdfs中存放列簇数据的目录'

注意:不是在客户端使用此命令

5.获取region的分割点,清除数据,快照

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round 814 (Div. 2) D2. Burenka and Traditions (hard version)

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; // #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5;…

实验室信息系统源码 saas模式java+.Net Core版开发的云LIS系统全套源码可二次开发有演示

实验室信息系统源码 saas模式java.Net Core版开发的云LIS系统全套源码可二次开发有演示 一、技术框架 技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQLserver Redis等 开发语言&#xff1a;C# 6.0、JavaScript 前端框架&#xff1a;JQuery、EasyUI、Bootstrap 后端框架&am…

如何配置Postgres的自动扩展功能以应对数据增长

文章目录 解决方案1. 表空间管理2. 分区表3. 自动扩展配置4. 监控和告警5. 使用外部工具和服务 示例代码示例1&#xff1a;创建表空间示例2&#xff1a;创建分区表示例3&#xff1a;调整配置参数示例4&#xff1a;使用监控和告警工具 总结 在PostgreSQL中&#xff0c;随着数据的…

type-cDP输入转双type-cDP输出,加type-c接口充电管理同时接两台显示器或者VR投屏,龙迅LT8712SX方案,龙迅桥接芯片方案

type-c的应用在各种设备上更加广泛&#xff0c;包括手机&#xff0c;电脑&#xff0c;游戏掌机&#xff0c; 因为type-c的功能非常强大&#xff0c;可以做到PD快充&#xff0c;DP信号输出&#xff0c;USB信号输出&#xff0c;所以很多设备为了做得更简洁都开始把其他的如HDMI接…

Go诊断工具

Go 提供了一些出色的诊断工具,可帮助我们深入了解应用程序的执行情况。 1. 分析工具 分析工具可观测应用程序执行的各种指标。它使我们能够解决性能问题、检测争用、定位内存泄漏等。这些指标可以通过以下几个配置文件收集: CPU--确定应用程序将时间花在了哪里Goroutine--报…

【.Net动态Web API】背景与实现原理

&#x1f680;前言 本文是《.Net Core进阶编程课程》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09; 专栏介绍&#xff1a;通过源码实例来讲解Asp.Net Core进阶知识点&#xff0c;让大家完全掌握每一…

Text2sql的一些技巧

最近看到了一篇关于text2sql的文章&#xff0c;以及一些论文。对使用模型做text2sql给了一些不错的建议。 参考文章&#xff1a;24年大模型潜力方向&#xff1a;大浪淘沙后的Text-to-SQL和Agent - 知乎 论文&#xff1a;https://arxiv.org/pdf/2403.09732.pdf 关于模型的建议 …

Stm32-hal库串口教程

工程是在上一节的LED的基础上修改的。 串口原理图 串口配置 led参考 CubelMX点灯-CSDN博客https://blog.csdn.net/anlog/article/details/137830323生成工程 编写包含文件 编写重定向代码 编写发送 编译下载 串口没有收到数据 查找原因 少配置了下图 再编译下载 收到数据…

mac安装nvm详细教程

0. 前提 清除电脑上原有的node (没有装过的可以忽略)1、首先查看电脑上是否安装的有node,查看node版本node -v2、如果有node就彻底删除nodesudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}2、保证自己的电脑上有安装git,不然下载n…

Since Maven 3.8.1 http repositories are blocked.

编译maven 项目时候报错提示下面信息&#xff1a; Since Maven 3.8.1 http repositories are blocked.Possible solutions: - Check that Maven settings.xml does not contain http repositories - Check that Maven pom files do not contain http repository http://XXXXXX:…

Java web应用性能分析之客户端慢

客户端慢的原因包括&#xff1a; 终端设备老化&#xff08;手机、PAD、电脑年限久远、运行期间产生了很多垃圾未清除&#xff09;终端网络设备老化&#xff08;路由器、交换机老化&#xff09;跟我们使用的手机一样&#xff0c;路由器也需要及时更新换代&#xff0c;否则硬件跟…

分布式限流——Redis + Lua脚本实现令牌桶算法

主要思路概括如下&#xff1a; 定义数据结构&#xff1a; 使用Redis存储令牌桶的状态&#xff0c;包括当前令牌数&#xff08;KEYS[1]&#xff09;和上一次令牌填充的时间戳&#xff08;KEYS[1]:last&#xff09;。 计算新增令牌&#xff1a; 获取当前系统时间与上次令牌填充时…

信息系统项目管理师0053:设计和实施(4信息系统管理—4.1管理方法—4.1.3设计和实施)

点击查看专栏目录 文章目录 4.1.3设计和实施1.设计方法2.架构模式4.1.3设计和实施 开展信息系统设计和实施,首先需要将业务需求转换为信息系统架构,信息系统架构为将组织业务战略转换为信息系统的计划提供了蓝图。信息系统是支持组织中信息流动和处理的所有基础,包括硬件、软…

前端请求发送成功,后端收到null

1、dishId为64&#xff0c;有数据 2、但是后端调试接不到数据&#xff0c;为null 3、形参部分缺少RequestBody接收JSON数据&#xff0c;加上即可

数据赋能(58)——要求:数据赋能实施部门能力

“要求&#xff1a;数据赋能实施部门能力”是作为标准的参考内容编写的。 在实施数据赋能中&#xff0c;数据赋能实施部门的能力体现在多个方面&#xff0c;关键能力如下图所示。 在实施数据赋能的过程中&#xff0c;数据赋能实施部门应具备的关键能力如下。 理性思维与逻辑分…

网络协议——IS-IS协议详解

1. IS-IS是什么 IS-IS是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。IS-IS属于内部网关协议&#xff0c;用于自治系统内部。IS-IS是一种链路状态协议&#xff0c;使用最短路径优先算法进行路由计算。 2. 应用场景&#xff08;园区网和骨干网&#xff0…

Xamarin.Android中“ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”异常处理

这里写自定义目录标题 1、问题2、解决 1、问题 在Xamarin.Android中出现ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”ABI 部署到 ABI“x86_64;x86”的不兼容设备。应创建匹配其中一个应用 ABI 的仿真程序&#xff0c;或将“x86_64”添加到应用生成…

手撸词法分析器(C/C++)

手撸词法分析器&#xff08;C/C&#xff09; 一.背景二.什么是词法分析器&#xff1f;三.代码四.思考 一.背景 这学期开设了编译原理&#xff0c;要求写个基本的词法分析器。所以博主就自己写了一份代码&#xff0c;也比较简单基础。 二.什么是词法分析器&#xff1f; 简单来…

Postman之接口测试

接口测试的必要条件 &#xff1a;请求方式、请求协议、请求地址、请求头、请求参数 常用请求方式 &#xff1a;Get请求&#xff08;get请求一般是获取数据&#xff09;、Post请求&#xff08;post请求一般是提交数据&#xff09; 传参格式 &#xff1a;表单提交、请求体提交 注…

什么是神经网络和机器学习?【云驻共创】

什么是神经网络和机器学习&#xff1f; 一.背景 在当今数字化浪潮中&#xff0c;神经网络和机器学习已成为科技领域的中流砥柱。它们作为人工智能的支柱&#xff0c;推动了自动化、智能化和数据驱动决策的进步。然而&#xff0c;对于初学者和专业人士来说&#xff0c;理解神经…