当前位置:   article > 正文

hbase shell基本命令、本地数据批量导入Hbase、Hbase与Hive交互实例_本地文件load到hbase 实战 shell

本地文件load到hbase 实战 shell

一、hbase shell基本命令

  1. 判断表存在与否
exists 'tablename'
  • 1
  1. 使用通配符的方式列出所有表
list 'abc.*'
  • 1
  1. 查看HBase 的版本
version
  • 1
  1. 查看HBase 的状态
status
  • 1
  1. 查看HBase 帮助文档
help
  • 1
  1. 创建一个表user,列族为baseinfo,privateinfo
create 'user',{NAME=>'baseinfo'},{NAME=>'privateinfo'}
  • 1
  1. 查看user 表信息
desc 'user'
  • 1
  1. 查看全部表数据
scan 'user'
  • 1
  1. 向user 表中插入数据
put 'user','002','baseinfo:name','kitty'
put 'user','002','baseinfo:age',18
put 'user','002','privateinfo:tall','1.8'
put 'user','002','privateinfo:health','good'
put 'user','001','baseinfo:name','hello'
put 'user','001','baseinfo:age',20
put 'user','001','privateinfo:tall','1.75'
put 'user','001','privateinfo:health','good'
put 'user','003','baseinfo:name','dava'
put 'user','003','baseinfo:age',25
put 'user','003','privateinfo:tall','1.8'
put 'user','003','privateinfo:health','bad'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 根据rowkey 获取数据
get 'user','001'
get 'user','002'
  • 1
  • 2
  1. 获取指定CF 数据的两种方式
get 'user','001','baseinfo'
get 'user','001',{COLUMNS=>['baseinfo']}
  • 1
  • 2
  1. 获取指定列的数据
get 'user','001',{COLUMNS=>['baseinfo:name']}
  • 1
  1. 更新数据
put 'user','001','baseinfo:name','jack'
  • 1
  1. 修改多版本存储
alter 'user',NAME=>'baseinfo',VERSIONS=>5
  • 1
  1. 多版本数据查询
get 'user','001',{COLUMNS=>['baseinfo:name'],VERSIONS=>5}
  • 1
  1. 全扫描
scan 'user','{COLUMNS=>['baseinfo:name'],VERSIONS=>5}'
  • 1
  1. 指定rowkey 范围查询
scan 'user',{STARTROW=>'001',STOPROW=>'002'}
  • 1
  1. 统计user 表中数据个数
count 'user'
  • 1
  1. 删除整行
deleteall 'user','001'
  • 1
  1. 删除一个单元格的值(等同于下文删除一列,可以在末尾加上时间戳)
delete 'user','002','baseinfo:name',1595243355670
  • 1
  1. 删除一列(无法直接删除某一列簇下的具体某一整个列(字段), 必须要指定某一rowkey,删除某一rowkey某一列簇下具体某一字段,等同于只删了这一单元格)
delete 'user','002','privateinfo:tall'
  • 1
  1. 删除一个列族数据
alter'user','delete'=>'baseinfo'
  • 1
  1. 启动user 表
enable 'user'
  • 1
  1. 禁用表
disable 'usr'
  • 1
  1. 查看表是否可用
is_disabled 'user'
  • 1
  1. 清空表
truncate 'user'
  • 1
  1. 删除user 表(删除表之前要禁用)
drop 'user'
  • 1
  1. compact 一个表的所有regions
compact 't1'
  • 1
  1. compact 某个空闲的region
compact 'r1'
  • 1
  1. compact 一个region 中的某个列族
compact 'r1', 'c1'
  • 1
  1. compact 一个表中的某个列族
compact 't1', 'c1'
  • 1
  1. 创建一张表,并写入数据,使用flush 命令刷出整个表
    创建一个表students,列族为baseinfo,privateinfo
create 'students', {NAME=>'baseinfo'}, {NAME=>'privateinfo'}
  • 1

向students 表中插入数据

put 'students', 'jsmith', 'baseinfo:city', 'montreal'
put 'students', 'jsmith', 'baseinfo:state', 'ON'
put 'students', 'jsmith', 'privateinfo:date', '2015-12-19'
  • 1
  • 2
  • 3
  1. 使用flush 命令,刷出(32)中表的某一个列族

刷出整个表

flush 'students'
  • 1

刷出某一个列族

flush 'privateinfo'
  • 1

二、将本地表数据批量导入到hbase中

  1. 根据表结构创建表:
    在这里插入图片描述
create 'customer',{NAME=>'order'}
  • 1
  1. 将表数据 hbase_import_data.csv 上传至linux /opt/datatmp/ 目录下

  2. 导入文档数据(\表示换行,在linux下直接导入,不是通过hbase shell)

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.separator=, \
-Dimporttsv.columns="HBASE_ROW_KEY,order:numb,order:date" \
customer file:///opt/datatmp/hbase_import_data.csv
  • 1
  • 2
  • 3
  • 4

注:在 -Dimporttsv.columns="…" 中,根据表数据将第一列作为 rowkey ,其他列要根据 列簇名:字段名 一 一对应,所有列都要匹配上

三、hbase与hive映射

在HBase 中创建学生成绩表并映射为hive 表,字段为 idnamescore
在HBase 中插入学生数据,在hive 中统计学生成绩大于85 的学生个数

  1. 首先需在hbase中创建表结构:

hbase shell 命令行:

create 'student',{NAME=>'stuInfo'}
  • 1
  1. 在hive中创建表映射到hbase中:

hive命令行:

create external table student(
id int,
name string,
score int
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with
serdeproperties
(
"hbase.columns.mapping"=":key,stuInfo:name,stuInfo:score"
)
tblproperties("hbase.table.name"="student")
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注:在 hbase.columns.mapping="…" 中,根据表数据将第一列作为 rowkey ,其他列要根据 列簇名:字段名 一 一对应,所有列都要匹配上

插入数据:

insert into student values
(1,'kitty',88),
(2,'youmi',80),
(3,'mystic',100);
  • 1
  • 2
  • 3
  • 4

查询数据:

select * from student;
  • 1

统计成绩大于85分的学生个数:

select count(score) from student where score>85;
  • 1
  1. 在HBase中查看表数据:
scan 'student'
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/621855
推荐阅读
相关标签
  

闽ICP备14008679号