hbase shell基本命令、本地数据批量导入Hbase、Hbase与Hive交互实例

一、hbase shell基本命令

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

向students 表中插入数据

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

刷出某一个列族

flush 'privateinfo'

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

  1. 根据表结构创建表:
    在这里插入图片描述
create 'customer',{NAME=>'order'}
  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

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

三、hbase与hive映射

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

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

hbase shell 命令行:

create 'student',{NAME=>'stuInfo'}
  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")
;

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

插入数据:

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

查询数据:

select * from student;

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

select count(score) from student where score>85;
  1. 在HBase中查看表数据:
scan 'student'

猜你喜欢

转载自blog.csdn.net/and52696686/article/details/107503305
今日推荐