IT评测·应用市场-qidao123.com

标题: Hbase 常用shell操作 [打印本页]

作者: 怀念夏天    时间: 2024-7-20 18:28
标题: Hbase 常用shell操作
目录
1、创建表
1.1、启动HBase Shell
1.2、创建表
1.3、检察表
1.4、删除表
2、插入数据
2.1、put命令
3、检察数据
3.1、get命令
3.2、查询数据中文显示
4、更新数据
4.1、使用put来更新数据
5、删除数据
5.1、delete命令
5.2、删除指定列的数据
5.3、deleteall命令删除整行数据
6、清空表
6.1、tuncate命令
7、批量导入数据集
8、扫描操作
8.1、scan命令
8.2、示例1:查询学生表中的所有数据
8.3、示例2:查询学生数据只显示1条
8.4、示例3:查询学生姓名和年龄
8.5、示例4:查询指定学生id的姓名和年龄
9、过滤器
9.1、HBase中的过滤器
9.2、过滤器的使用
9.3、示例1:使用RowFilter查询指定学生id的信息
9.4、示例2:查询在校状态为1,且年龄大于21的学生信息

通过shell的方式来维护和管理HBase。例如:执行建表语句、执行增删改查操作等等。
需求:有以下学生数据,要将如许的一些数据生存到HBase中。




1、创建表


1.1、启动HBase Shell


   hbase shell
  


1.2、创建表


   create '表名','列蔟名'...
  
   -- 创建学生表,表名为student_info,该表有一个列蔟为C1
create 'student_info','C1';
  注意:

1.3、检察表

   list
  
1.4、删除表



1、禁用表
   disable "表名"
  2、删除表
   drop "表名"
  示例:删除student_info表
   disable "student_info"
drop "student_info"
  2、插入数据

往学生表中添加以下数据。
学号
姓名
性别
年龄
入学时间
在校情况
0001
张三

25
2023-02-06
1
2.1、put命令


   put '表名','ROWKEY','列蔟名:列名','值'
  添加以上数据,需要执行以下操作:
   put 'student_info','0001','C1:stuno','0001'
put 'student_info','0001','C1:name','张三'
put 'student_info','0001','C1:sex','男'
put 'student_info','0001','C1:age',25
put 'student_info','0001','C1:enrollment_time','2023-02-06'
put 'student_info','0001','C1:state',1
  



3、检察数据

3.1、get命令


   get '表名','rowkey'
  示例:查询指定学生号的数据
   get 'student_info','0001'
  

3.2、查询数据中文显示


   get 'student_info','0001', {FORMATTER => 'toString'}
  

注意:

4、更新数据

4.1、使用put来更新数据


示例:更新张三的年龄为20
   put 'student_info', '0001', 'C1:age', 20
  

注意:

5、删除数据


5.1、delete命令


   delete '表名', 'rowkey', '列蔟:列'
  
5.2、删除指定列的数据

   delete 'student_info','0001','C1:age'
  

5.3、deleteall命令删除整行数据


   deleteall '表名','rowkey'
  示例:删除rowkey为0001的数据
   deleteall 'student_info','0001'
  
6、清空表

6.1、tuncate命令


   truncate "表名"
  示例:清空student_info的所有数据
   truncate 'student_info'
  7、批量导入数据集




   cd /hbase/data
rz
  
   hbase shell /hbase/data/student_info.txt
  
8、扫描操作

8.1、scan命令


   scan '表名'
  
8.2、示例1:查询学生表中的所有数据

注意:scan扫描非常耗时,要制止scan一张大表,生产环境中禁用。
   scan 'student_info',{FORMATTER => 'toString'}
  

8.3、示例2:查询学生数据只显示1条

   scan 'student_info', {LIMIT => 1, FORMATTER => 'toString'}
  8.4、示例3:查询学生姓名和年龄

   scan 'student_info', {COLUMNS => ['C1:name', 'C1:age'], FORMATTER => 'toString'}
  


8.5、示例4:查询指定学生id的姓名和年龄


   scan '表名', {ROWPREFIXFILTER => 'rowkey'}
  示例实现命令如下:
   scan 'student_info', {ROWPREFIXFILTER => '0001', COLUMNS => ['C1:name', 'C1:age'], FORMATTER => 'toString'}
  


9、过滤器



9.1、HBase中的过滤器


   show_filters
  


rowkey
过滤器
RowFilter
实现行键字符串的比力和过滤
PrefixFilter
rowkey前缀过滤器
KeyOnlyFilter
只对单元格的键进行过滤和显示,不显示值
FirstKeyOnlyFilter
只扫描显示雷同键的第一个单元格,其键值对会显示出来
InclusiveStopFilter
替代 ENDROW 返回终止条件行
列过滤器
FamilyFilter
列簇过滤器
QualifierFilter
列标识过滤器,只显示对应列名的数据
ColumnPrefixFilter
对列名称的前缀进行过滤
MultipleColumnPrefixFilter
可以指定多个前缀对列名称过滤
ColumnRangeFilter
过滤列名称的范围
值过滤器
ValueFilter
值过滤器,找到符合值条件的键值对
SingleColumnValueFilter
在指定的列蔟和列中进行比力的值过滤器
SingleColumnValueExcludeFilter
排除匹配成功的值
其他过滤器
ColumnPaginationFilter
对一行的所有列分页,只返回 [offset,offset+limit] 范围内的列
PageFilter
对显示结果按行进行分页显示
TimestampsFilter
时间戳过滤,支持等值,可以设置多个时间戳
ColumnCountGetFilter
限定每个逻辑行返回键值对的个数,在 get 方法中使用
DependentColumnFilter
允许用户指定一个参考列或引用列来过滤其他列的过滤器
Java API官方所在:Apache HBase 4.0.0-alpha-1-SNAPSHOT API
9.2、过滤器的使用


   scan '表名', { Filter => "过滤器(比力运算符, '比力器表达式')” }
  
比力运算符
形貌
=
等于
>
大于
>=
大于等于
< 小于
<= 小于等于
!=
不等于

比力器
形貌
BinaryComparator
匹配完整字节数组
BinaryPrefixComparator
匹配字节数组前缀
BitComparator
匹配比特位
NullComparator
匹配空值
RegexStringComparator
匹配正则表达式
SubstringComparator
匹配子字符串

比力器
表达式语言缩写
BinaryComparator
binary:值
BinaryPrefixComparator
binaryprefix:值
BitComparator
bit:值
NullComparator
null
RegexStringComparator
regexstring:正则表达式
SubstringComparator
substring:值
9.3、示例1:使用RowFilter查询指定学生id的信息

分析:



实现命令如下:
   scan 'student_info', {FILTER => "RowFilter(=,'binary:0001')"}
  


9.4、示例2:查询在校状态为1,且年龄大于21的学生信息


   SingleColumnValueFilter('C1', 'state', = , 'binary:1')
  
   SingleColumnValueFilter('C1', 'age', > , 'binary:21')
  
   SingleColumnValueFilter('C1', 'age', > , 'binary:21',true, true)
  
   scan 'student_info', {FILTER => "SingleColumnValueFilter('C1', 'state', = , 'binary:1') AND SingleColumnValueFilter('C1', 'age', > , 'binary:21')", FORMATTER => 'toString'}
  



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4