Hbase常用操作记录
创建表
语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
- 例如:创建表t1,有两个family name:f1,f2,且版本数均为2
create 'table',{NAME => 'family1', VERSIONS => 2,TTL=>'100000'},{NAME => 'family2', VERSIONS => 2,TTL=>'100000'}
查看表结构
describe <table>
修改表结构
disable 'table'
alter 'table',{NAME=>'info',TTL=>'100000'}
enable 'table'
删除表
disable 'table'
drop 'table'
统计行数 hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'tablename'
添加数据 put 'table','rowkey','family:column','value'
查询表中的数据行数 count 'table', {INTERVAL => 100, CACHE => 500}
删除数据
删除行中的某个列值 delete 'table','rowkey','family:column'
删除行 deleteall 'table','rowkey'
删除表中的所有数据 truncate 'table'
rowkey中包含某关键字
- BinaryComparator-使用Bytes.compareTo()比较
- BinaryPrefixComparator-和BinaryComparator差不多,从前面开始比较
- NullComparator-Does not compare against an actual value but whether a given one is null, or not null.
- BitComparator-Performs a bitwise comparison, providing a BitwiseOp class with AND, OR, and XOR operators.
- RegexStringComparator-正则表达式
- SubstringComparator-把数据当成字符串,用contains()来判断
import org.apache.hadoop.hbase.filter.CompareFilterimport org.apache.hadoop.hbase.filter.需要使用的过滤器提取rowkey以01结尾数据Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator(".*01$"));提取rowkey以包含201407的数据Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("201407"));提取rowkey以123开头的数据Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryPrefixComparator("123".getBytes())))import org.apache.hadoop.hbase.filter.RowFilterscan 'table',FILTER => RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'),SubstringComparator.new('KEY'))
以某关键字开头
scan 'table', FILTER => "PrefixFilter ('关键字')"
根据column family value查询 包含某一关键字的数据
scan 'table', FILTER=>"ColumnPrefixFilter('family:column') AND ( ValueFilter(=,'substring:关键字1') OR ValueFilter(=,'substring:关键字2') )"
查询值等于某一关键字的数据
scan 'table', FILTER=>"ValueFilter(=,'binary:关键字')"