一、Hbase shell客户端使用
a、进入客户端 hbase shellb、常用命令help 查看命令帮助list 列出Hbase中存在的所有表list_namespace 列出HBase所有的命名空间alter 修改列簇(column family)模式
1、alter 'student',{NAME=>'info',VERSION=>3} //更改列族信息
count 统计表中行的数量create 创建表
1、create 'student','cf1' // 创建一个student表,列族为cf1,至少指定一个列族名2、create 'stu','cf1','cf2','cf3' // 创建一个student表,列族为cf1、cf2、cf32、create 'bigdata:stu','cf1','cf2','cf3' // 在名为biigdata的namespace下创建一个student表,列族为cf1、cf2、cf3
describe 显示表相关的详细信息
1、查看表的描述: describe 'student'一个大括号就相当于一个列簇: {NAME => 'cf1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER=> 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false',COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}
delete 删除指定对象的值(可以为表,行、列对应的值,另外也可以指定时间戳的值)
格式:delete 'ns1:t1','r1','c1',ts
deleteall 删除指定行的所有元素值
格式:deleteall 'ns1:t1','r1'
disable 使表无效
flush 表明:把内存的数据刷写到hdfs/磁盘
drop 删除表,在删除表之前需要使用disable命令更改表不可用drop_namespace 删除命名空间,在删除之前需要该命名空间下没有表enable 使表有效exists 测试表是否存在exit 退出Hbaseshellincr 增加指定表,行或列的值put 向指向的表单元添加值
格式:put 'ns1:t1' , 'r1' , 'c1' , 'value' , ts格式:put '命名空间:表明' , 'rowKey' , '列族:列名' , '值' , timestamp1、put 'bigdata:stu' , '1001' , 'info:name' , ' 张三'
tools列出Hbase所支持的工具get 获取行或单元(cell)的值
按指定 RowKey 获取唯一一条记录,get 方法(org.apache.hadoop.hbase.client.Get)Get 的方法处理分两种 : 设置了 ClosestRowBefore 和没有设置的 rowlock 。主要是用来保证行的事务性,即每个 get 是以一个 row 来标记的。一个 row 中可以有很多 family 和column.1 查看 scores 表中的 Jim 行的相关数据。get 'scores','Jim'2 获取rowKey=Jim并且 1552819392398 <= 时间戳范围 < 1552819398244get 'scores', 'Jim', {TIMERANGE => [1552819392398, 1552819398244]}3 查看 scores 表中 Jim 行、course 列族的所以数据get 'scores','Jim','course'或get 'scores','Jim',{COLUMNS=>'course'}4 查看 scores 表中 Jim 行、course 列族中 math 列的值。get 'scores','Jim','course:math'或get 'scores','Jim',{COLUMN=>'course:math'}5 获取多个列的值,使用数组表示get 'scores', 'Jim', {COLUMN => ['grade', 'course', 'address:shen']}6 获取grade列4个版本的值,默认是按照时间戳降续排序的get 'scores', 'Jim', {COLUMN => 'grade', VERSIONS => 4}7 通过时间戳获取某列相应版本的数据get 'scores','Jim',{COLUMN=>'course:Chinese',TIMESTAMP=>1599450828729}8 获取rowKey=Jim中的值等于85的所有列get 'scores', 'Jim', {FILTER => "ValueFilter(=, 'binary:85')"}
scan 通过对表的扫描来获取对用的值
按指定的条件获取一批记录, scan 方法(org.apache.Hadoop.hbase.client.Scan)实现条件查询功能使用的就是 scan 方式.1)scan 可以通过 setCaching 与 setBatch 方法提高速度(以空间换时间);2)scan 可以通过 setStartRow 与 setEndRow 来限定范围([start,end)start 是闭区间,end 是开区间)。范围越小,性能越高。3)scan 可以通过 setFilter 方法添加过滤器,这也是分页、多条件查询的基础。1 扫描所有数据scan 'scores'2 扫描所有数据,只显示某列scan 'scores',{COLUMN => 'course:Chinese'}3 扫描所有数据,只显示某列,并指定时间戳scan 'scores', {COLUMNS => 'grade', TIMESTAMP=> 1599461998485}4 扫描所有数据,并用TIMERANGE限制,表示的是”>=开始时间 and <结束时间“scan 'scores',{TIMERANGE=>[1599461946117, 1599464538536]}5 扫描所有数据,显示多列的值scan 'scores', {COLUMNS => [ 'grade','course:Chinese', 'course:math']}6 LIMIT 返回的行数scan 'scores', { LIMIT => 2}7 STARTROW,ROWKEY起始行。会先根据这个key定位到region,再向后扫描scan 'scores', { STARTROW => 'Jim'}8 STOPROW :截止到STOPROW行,STOPROW行之前的数据,不包括STOPROW这行数据scan 'scores', { STOPROW => 'Tom'}9 scan 命令可以指定 startrow,stoprow 来 scan 多个 row,并限制rowkey数量scan 'scores',{COLUMNS =>'course',LIMIT =>10, STARTROW => 'Jim', STOPROW=>'Tom'}
status 返回Hbase集群的状态信息shutdown 关闭Hbase集群(与exit不同)c、关于表: (创建表create、查看表列表list、查看表的详细信息desc、删除表drop、清空表truncate、修改表的定义alter、)d、关于数据的操作(增put、删delete、查get + scan,改=变相的增加)e、查看有哪些命令: help;如果哪个命令不会使用 help "command"
