HBase即Hadoop数据库,是一个分布式的、面向列的开源数据库,是google的bigtable的开源实现。HBase是Apache的Hadoop项目的顶级项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的列式数据库
基本命令:
hbase shell
--进入hbase shell 模式
help
查看基本命令集合
list
看库中所有表
status
查看当前运行服务器状态
version
版本查询
exits
‘表名字’ 判断表存在
describe 'tablename'
查看表属性/结构
show_filters
查看过滤器
is_enable '表名'
判断表是否enable
is_disable '表名'
判断表是否disable
count '表名'
查询表中的总条数
hbase shell 进入hbase shell模式
'help<RETURN>' 命令帮助
"exit<RETURN>" 离开hbase shell模式
'help "COMMAND_GROUP" ' 进入命令分组
COMMAND GROUPS:
Group name: general
Commands:
status//查看当前运行服务器状态
table_help//表操作帮助
version//版本查询
whoami
Group name:ddl
Commands:
add_index,//创建索引
eg:add_index 't1', 'index_name', 'COMBIN_INDEX|INDEXED=F1:q1:9|rowkey:rowkey:10,UPDATE=TRUE'
alter//修改
alterUseJson
alter_status//修改当前运行服务器状态
create//创建
create_table//创建表
delete_fulltext_index//删除全文索引
delete_global_index//删除全局索引
delete_index//删除索引
delete_local_index//删除本地索引
delete_table//删除表
describe//描述
describeInJson
disable//使失效
disable_all//使全部失效
drop//删除
drop_all//全部删除
enable//激活
enable_all//全部激活
exists//退出
get_table//查询表
eg:get_table 't1'
is_disabled//是否失效
is_enabled//是否激活
list//查看库中所有表
rebuild_fulltext_index//重建全文索引
rebuild_fulltext_index_with_range//范围内重建全文索引
rebuild_fulltext_index_with_timerange//时间范围内重建全文索引
rebuild_global_index//重建全局索引
rebuild_global_index_with_range//范围内重建全局索引
rebuild_global_index_with_timerange//时间范围内重建全局索引
rebuild_index//重建索引
rebuild_local_index//重建本地索引
rebuild_local_index_with_range//范围内重建本地索引
rebuild_local_index_with_timerange//时间范围内重建本地索引
show_filters//查看过滤器
split_fulltext_index_partition//分割全文索引
Group name:namespace
Commands:
alter_namespace//修改命名空间
create_namespace//创建命名空间
describe_namespace//描述命名空间
drop_namespace//删除命名空间
list_namespace//显示命名空间
list_namespace_tables//显示命名空间列表
Group name:dml
Commands:
append//拼接
eg:append 't1', 'r1','c1','value', ATTRIBUTES=>{'mykey' => 'myvalue'}
count//数目
eg:count 't1'
count 't1' , INTERVAL => 100000
count 't1' , INTERVAL => 10 , CACHE => 1000
delete//删除
deleteall//全部删除
get//获得
eg: t.get 'r1'
t.get 'r1' , {TIMERANGE => [ts1, ts2]}
t.get 'r1' , {COLUMN => 'C1'}
t.get 'r1' , {COLUMN => 'C1' , TIMERANGE => [ts1, ts2], VERSION =>4}
t.get 'r1' ,{FILTER => "ValueFilter(=, 'binary:abc')"}
get_counter//获取除**之外
hdelete
hget
hput
hscan
hscan_local_index
incr//增长
put
scan//扫描
eg:
scan 'hbase:meta'
scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}
scan 'nsl:t1',{COLUMN => ['C1','C2'],LIMIT =>10, STARTROW =>'XYZ'}
scan 't1',{COLUMN => ['C1','C2'],LIMIT =>10, STARTROW =>'XYZ'}
scan 't1',{COLUMN => 'C1',TIMERANGE => [1303668804,1303668904]}
scan 't1',{REVERSED => true}
scan_local_index//扫描本地索引
truncate//删除表数据
truncate_all//全部删除
truncate_preserve//保留性删除
Group name:tools
Commands:
assign
balane_switch
balancer
catalogjanitor_enabled
catalogjanitor_run
catalogjanitor_switch
close_region
compact
flush
hlog_roll
major_compact
move
split
trace
unassign
zk_dump
Group name:replication
Commands:
add_peer
disable_peer
enable_peer
list_peer
list_replicated_tables
remove_peer
set_peer_tableCFs
show_peer_tableCFs
Group name:snapshots
Commands:clone_snapshot
delete_snapshot
list_snapshots
rname_snapshot
restore_snapshot
snapshot
Group name:security
Commands:grant
revoke
user_permission
Group name:visibility labels
Commands:add_labels
clear_auths
get_auths
set_auths
set_visibility
一,建表
基本命令:
–简单建表:
hbase> create ‘table_name’,{NAME=>‘columnFamily’}<, {NAME=>‘columnFamily2’}…>
=====>(更简化版本):create ‘table_name’,‘columnFamily’
–指定版本数
hbase> create ‘table_name’, {NAME=>'columnFamily,'VERSIONS => }
–指定参数
DATA_BLOCK_ENCODING => ‘NONE’, //数据块编码方式设置 参见:http://hbase.apache.org/book.html#data.block.encoding.enable
BLOOMFILT => ‘ROW’, //参见:http://hbase.apache.org/book.html#bloom.filters.when
REPLICATION_SCOPE => ‘0’, //配置HBase集群replication时需要将该参数设置为1. //参见:http://blog.cloudera.com/blog/2012/08/hbase-replication-operational-overview/?utm_sourc
VERSIONS => ‘1’, //设置保存的版本数 COMPRESSION => ‘NONE’, //设置压缩算法 MIN_VERSIONS => ‘0’, //最小存储版本数
TTL => ‘FOREVER’, //设置保存数据时间 单位:s 参见:http://hbase.apache.org/book.html#ttl
KEEP_DELETED_CELLS => ‘false’, //参见:http://hbase.apache.org/book.html#cf.keep.deleted
BLOCKSIZE => ‘65536’, //设置HFile数据块大小(默认64kb)
IN_MEMORY => ‘false’,//设置激进缓存,优先考虑将该列族放入块缓存中,//针对随机读操作相对较多的列族可以设置该属性为true
BLOCKCACHE => ‘true’ //数据块缓存属性
示例:
create 'table_name',{NAME=>'cf1',BLOOMFILTER=>'ROWCOL',VERSIONS=>'1',TTL=>'15768000',MIN_VERSIONS=>'0',COMPRESSION=>'SNAPPY',BLOCKCACHE=>‘false'},{NAME => 'cf2',BLOOMFILTER => 'ROWCOL', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0',COMPRESSION => 'SNAPPY', BLOCKCACHE => 'false'}
二,清空&删除
清空:truncate ‘table_name’
删除:先disable 再drop:
(1) disable ‘table_name’, (2) drop ‘table_name’
三,修改表
需要先disable ‘table_name’,修改完成后enable ‘table_name’
示例:
disable 'table_name'
alter 'table_name',{NAME=>'cf',TTL=>'xxxxxxx'},{NAME=>'col', TTL=>'xxxxxxx'}
enable 'table_name'
四,查询
**用get的方法,指定rowKey,columnFamily,column等信息查询
get '表名','rowKey'
1、按照列簇进行过滤FamilyFilter
scan ‘表名’,FILTER=>“FamilyFilter(=,‘substring:字符串的值’)”//查询出某个表列簇包含某个字符串的记录
eg:
scan 'test1',FILTER=>"FamilyFilter(=,'substring:c')"
2、指定row范围,指定 column
scan 'tableName',{COLUMN=>'family:columnName',STARTROW=>'startRow',ENDROW=>'endRow',LIMIT=>XX}
3、按照某个确定的行健进行过滤(<,<=,=,>,>=)
scan ‘表名’, FILTER=>“RowFilter(=,‘binary:行健值’)”//按照某个确定的行健进行过滤(<,<=,=,>,>=)
eg:
scan 'test1', FILTER=>"ValueFilter(=,'binary:test')"
4、按照value的值过滤ValueFilter
scan ‘表名’, FILTER=>“ValueFilter(=,‘substring:value值’)”//查询出某个表内列值包含指定字符串的记录
eg:
scan 'test1', FILTER=>"ValueFilter(=,'substring:88')"
5、按照行健前缀进行过滤PrefixFilter
scan ‘表名’, FILTER => “PrefixFilter (‘行健前缀’)”//查询出行健以某个字符串开始的记录
eg:
scan 'test1',FILTER => "PrefixFilter ('user1')"
6、从指定的ROW开始,找到开头匹配的row
eg:
scan 'test1', {STARTROW=>'user1|ts2', FILTER => "PrefixFilter ('user1')"}
7、指定开始结束的row范围
eg:
scan 'test1', {STARTROW=>'user1|ts2', STOPROW=>'user2'}
8、对于指定的列C2,扫描符合条件的row
scan 'test1', FILTER=>"ColumnPrefixFilter('c2') AND ValueFilter(=,'substring:88')" //多条件支持
9、按照行健进行过滤RowFilter
scan ‘表名’, FILTER=>“RowFilter(=,‘substring:字符串的值’)”//过滤出行健包含某个字符的数据记录(模糊查询)
eg:
scan 'test1', FILTER => "RowFilter(=,'substring:c')"
10、查询rowkey里面包含ts3的
scan 'test1', {FILTER => RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('ts3'))}
11、查询rowkey里面包含ts的
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.filter.RowFilter
scan 'test1', {FILTER => RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('ts'))}
五,增
shell 端增加数据只能单条插:
hbase> put 'tableName','rowKey','columnFamily:column','value'
对于多用户环境,需要考虑表空间权限等,则需要:
1,创建表空间 :create_namespace 'namespace'
2,创建表:create 'namespace:tableName','columnFamily'
3,删除空间:drop_namespace 'namespace'
hbase有两个系统内置的预定义命名空间
–hbase 系统命名空间,用于包含hbase的内部表
–default 所有未指定命名空间的表都自动进入该命名空间
SFTP命令:
ascii 将传输模式设置为ASCII模式
binary 将传输模式设置为二进制模式
cd path 切换到指定远程目录
lcd path 切换到指定本地目录
detail remote-path 显示远程文件信息
ldetail local-path 显示本地文件信息
chgrp group path 更改文件路径分组为group
chmod mode path 更改路径文件的权限模式
chown owner path 更改路径文件的所有者
include filename 包含文件
get [-r] [-a | -b] remote-path (-a)ASCII,(-b)二进制形式下载文件
eg:
get [-Ppr] remote [local]
get test.cpp ./project/ //将远程目录下的文件test.cpp下载到本地当前目录的project文件夹
ln [-s] existingpath linkpath 硬链接/软连接远程文件
ls [options] [path] 显示远程文件列表
lls [options] [path] 显示本地文件列表
mkdir path 创建远程文件
lmkdir path 创建本地文件
mv oldpath newpath 移动远程文件
lmv oldpath newpath 移动本地文件
open [user@] host [:path] 连接远程主机
put [-r] [-a | -b] local-path (-a)ASCII,(-b)二进制形式上传文件
eg:
put [-Ppr] local [remote]
put /home/liu/Software/RHEL_5.5\ *86_64.ios/home/xudong/Blog/
//将本地文件/home/liu/Software/目录下的ios文件上传到远程登陆主机的/home/xudong/Blog/目录下
pwd 显示远程工作文件夹
lpwd 显示本地工作文件夹
quit 退出
rename oldname newname 重命名远程文件
lrename oldname newname 重命名本地文件
rmdir path 删除远程文件夹
lrmdir path 删除本地文件夹
rm path 删除远程文件
lrm path 删除本地文件
su username 替换当前用户
type [transfer-mode] 设置文件转换模式并显示
view remote-path 下载并打开文件
原文:https://blog.csdn.net/weixin_42553458/article/details/80847808