ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Hbase 入门笔记II :基本shell操作

2021-04-16 13:57:39  阅读:346  来源: 互联网

标签:f1 shell seconds II emp scores Hbase col row


Hbase的表可以看作是一种服务,需要客户端和他连接,所以有disable,enable 不可用和可用状态。

致谢:http://c.biancheng.net/view/3587.html

基础操作

1. 查询服务器状态

status
2. 查询版本号

version
 

DDL 操作:数据定义语言(Data Defination Language,DDL)操作主要用来定义、修改和查询表的数据库模式。

1. 创建一个表


create 'studen','info1'  最少有一个列族 例如info1

2. 列出所有表

list
 

3. 获取表的描述

describe'studen'
Table studen is ENABLED
table
COLUMN FAMILIES DESCRIPTION
{NAME =>'coluran_famaly',DATA_BLOCK_ENCODING =>'NONE',BLOOMFILTER =>'ROW',REPLICATION_SCOPE=>'0',VERSIONS=>'1',COMPRESSION=>'NONE', MIN_VERSIONS =>'0',TTL=>'FOREVER',KEEP_DELETED_CELLS=>'FALSE',BLOCKSIZE=>'65536',IN_MEMORY
=>'false',BLOCKCACHE=>'true}
......
3 row(s) in 0.0430 seconds

改表

alter 'studen',{NAME=>'info',VERSION=>3}
Unknown argument ignored for column family info: 1.8.7
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9320 seconds
 

4. 删除一个列族

alter'table',{NAME=>'column_famaly',METHOD=>'delete'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 3.0220 seconds

5. 删除一个表

首先把表设置为 disable。

disable'stu'
0 row(s) in 2.3150 seconds

然后删除一个表。

drop'stu'
0 row(s) in 1.2820 seconds

6. 查询表是否存在

exists'table'
Table table does exist
0 row(s) in 0.0280 seconds

7. 查看表是否可用

is_enabled'table'
true
0 row(s) in 0.0150 seconds

 

创建命名空间

create_namespace 'bigdata'

create "bigdata:stu","info"

删除命名空间需要先删干净其中所有的表
 

 

DML 操作 DML(Data Manipulation Language,数据操作语言)操作主要用来对表的数据进行添加、修改、获取、删除和查询。

1. 插入数据

给 emp 表的 rw1 行分别插入 3 个列。

put 'stu','1001','info:name','Bill'
0 row(s) in 0.1830 seconds
 

2. 获取数据

1)scan:

scan “stu”

限定范围 scan "stu",{STARTROW=>'1001',STOPROW=>'1003'}  左闭右开

 

2)get:

获取 emp 表的 1001 行的所有数据。

 get "stu","1001"
COLUMN                         CELL                                                                                  
 info:name                     timestamp=1618551529086, value=Bill                                                   
1 row(s) in 0.0200 seconds

3)get 列族:

035:0>get'emp','rw1','col_f1'
COLUMN    CELL   
col_f1:age timestamp=1463055735107,value=20
col_f1:name timestamp=1463055709542,value=tanggao col_f1:sex timestamp=1463055753395,value=boy
3 row(s) in 0.0270 seconds

 

3. 更新一条记录 也是put

更新 emp 表的 rw1 行、col_f1 列族中 age 列的值。

put 'emp','rw1'col_f1:age','22'
0 row(s) in 0.0160 seconds

查看更新的结果。

hbase(main):038:0>get 'emp','rw1','col_f1:age'
COLUMN    CELL   
col_f1:age timestamp=1463055893492,value=22
1 row(s) in 0.0190 seconds

 

4. 通过时间戳获取两个版本的数据

get 'emp','rw1',{COLUMN=>'col_f1:age',TIMESTAMP=>1463055735107}
COLUMN    CELL
col_f1:age timestamp=1463055735107,value=20
1 row(s) in 0.0340 seconds

get 'emp','rw1',{COLUMN=>'col_f1:age',TIMESTAMP=>1463055893492}
COLUMN    CELL   
col_f1:age timestamp=1463055893492,value=22
1 row(s) in 0.0140 seconds

 

5. 全表扫描

hbase(main):041:0>scan 'emp'
ROW    COLUMN+CELL
id    column=col_f1:age,timestamp=1463055893492,value=2
id    column=col_f1:name,timestamp=1463055709542,value=tanggao
id    column=col_f1:sex,timestamp=1463055753395,value=boy
1 row(s) in 0.1520 seconds

 

6. 删除一列

删除 emp 表 rw1 行的一个列。

delete 'emp','rw1','col_f1:age'
0 row(s) in 0.0200 seconds

检查删除操作的结果。

get 'emp','rw1'
COLUMN    CELL
col_f1:name timestamp=1463.055709542,value=tanggao col_f1:sex timestamp=1463055753395,value=boy
2 row(s) in 0.2430 seconds

 

7. 删除行的所有单元格

使用“deleteall”命令删除 emp 表 rw1 行的所有列。

deleteall 'emp','rw1'
0 row(s) in 0.0550 seconds

 

8. 统计表中的行数

count 'emp'
0 row(s) in 0.0450 seconds

 

9. 清空整张表

truncate'emp'
Truncating 'emp' table(it may take a while);
-Disabling table...
-Truncating table...
0 row(s) in 4.1510 seconds

 

HBase 表实例

下面将以一个“学生成绩表”的例子来介绍常用的 HBase 命令的使用方法。

图 1 是一张学生成绩单,其中,name 是行键,grade 是一个特殊列族,只有一列并且没有名字(列族下面的列是可以没有名字的),course 是一个列族,由 3 个列组成(Chinese、math 和 english)。用户可以根据需要在 course 中建立更多的列,如 computing、physics 等。

学生成绩表
图 1  学生成绩单

1. 建立一个表 scores,包含两个列族:grade 和 course

hbase(main):001:0> create 'scores','grade','course'

2. 按设计的表结构添加值

put'scores','Jim1','grade:'1'
put'scores','Jim','course:Chinese','90'
put'scores','Jim','course:math','85'
put'scores','Jim','course:english','85'
put'scores','Tom','grade:','2'
put'scores','Tom','course:Chinese','97'
put'scores','Tom','course:math','100'
put'scores','Tom','course:english','92'

样表结构就建立起来了,列族里边可以自由添加子列。如果列族下没有子列,则只加“:”即可。

3. 根据键值查询数据

查看 scores 表中的 Jim 行的相关数据。

hbase(main):012:0>get 'scores','Jim'

查看 scores 表中 Jim 行、course 列族中 math 列的值。

hbase(main):012:0>get 'scores','Jim','course:math'

或者用以下代码。

hbase(main):012:0>get 'scores','Jim',{COLUMN=>'course:math'}

4. 扫描所有数据

hbase(main):012:0>scan 'scores'

上述命令会显示所有数据行,也就是 Tom 和 Jim 的所有课程的成绩,包括 chinese、math 和 english。

为了限制返回的结果,用户可以指定一些修饰词,如 TIMERANGE、FILTER、LIMIT、STARTROW、STOPROW、TIMESTAMP、MAXLENGTH 或 COLUMN。

获取 Jim 和 Tom 的 english 的成绩。

scan'scores',{COLUMN=>'course:english',STARTROW=>Jim,ENDROW=Tom}

5. 添加新的列

为 Tom 添加 computing 课程的成绩。

hbase(main):012:0>put'scores','Tom','course:computing','90'

标签:f1,shell,seconds,II,emp,scores,Hbase,col,row
来源: https://blog.csdn.net/weixin_41684423/article/details/115756532

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有