HBASE 常用命令及操作语句

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

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值