https://cloud.tencent.com/developer/article/1336648
1.进入Hbase shell命令 $>hbase shell #命名空间级别: #列出所有命名空间 hbase> list_namespace #新建命名空间 hbase> create_namespace 'ns1' #删除命名空间 hbase> drop_namespace 'ns1' #修改命名空间 #表级别: #列出所有表 hbase> list #列出指定命名空间下的所有表 hbase> list_namespace_tables 'ns1' #新建一个以命名空间ns1的表t1,列族为cf1。 hbase> create 'ns1:t1', 'cf1' #删除表 hbase> disable 'ns1:t1' hbase> drop 'ns1:t1' #修改表名 HBase没有rename命令,可以通过快照功能修改表名,详见下述。 #查看表内容 hbase> scan 'ns1:t1', {LIMIT=>5} # 查看前5行数据 #插入 hbase> put 'ns1:t1', 'r1', 'cf1:c1', 'value' #查看 hbase> get 'ns1:t1', 'r1' #表分区(region分裂多个region以及region合并) #建表预分区 create 'gld:student', 'cf1', {SPLITS => ['1', '2', '3', '4', '5', '6', '7', '8', '9']} 每个分区的Start Key和End Key分别为:(~, 1),[1, 2),[2, 3),[3, 4),[4, 5),[5, 6),[6, 7),[7, 8),[8, 9),[9, ~) 1.1 获取帮助 # 获取帮助 help # 获取命令的详细信息 help 'status' 1.2 查看服务器状态 status 1.3 查看版本信息 version 2.1 查看所有表 list 2.2 创建表 命令格式: create ‘表名称’, ‘列族名称1’,‘列族名称2’,‘列名称N’ # 创建一张名为Student的表,包含基本信息(baseInfo)、学校信息(schoolInfo)两个列族 create 'Student','baseInfo','schoolInfo' 2.3 查看表的基本信息 命令格式:desc ‘表名’ describe 'Student' 2.4 表的启用/禁用 enable和disable可以启用/禁用这个表,is_enabled和is_disabled来检查表是否被禁用 # 禁用表 disable 'Student' # 检查表是否被禁用 is_disabled 'Student' # 启用表 enable 'Student' # 检查表是否被启用 is_enabled 'Student' 2.5 检查表是否存在 exists 'Student' 2.6 删除表 # 删除表前需要先禁用表 disable 'Student' # 删除表 drop 'Student' 三、增删改 3.1 添加列族 命令格式: alter ‘表名’, ‘列族名’ alter 'Student', 'teacherInfo' 3.2 删除列族 命令格式:alter ‘表名’, {NAME => ‘列族名’, METHOD => ‘delete’} alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'} 3.3 更改列族存储版本的限制 默认情况下,列族只存储一个版本的数据,如果需要存储多个版本的数据,则需要修改列族的属性。修改后可通过desc命令查看。 alter 'Student',{NAME=>'baseInfo',VERSIONS=>3} 3.4 插入数据 命令格式:put ‘表名’, ‘行键’,‘列族:列’,‘值’ 注意:如果新增数据的行键值、列族名、列名与原有数据完全相同,则相当于更新操作 put 'Student', 'rowkey1','baseInfo:name','tom' put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09' put 'Student', 'rowkey1','baseInfo:age','29' put 'Student', 'rowkey1','schoolInfo:name','Havard' put 'Student', 'rowkey1','schoolInfo:localtion','Boston' put 'Student', 'rowkey2','baseInfo:name','jack' put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22' put 'Student', 'rowkey2','baseInfo:age','21' put 'Student', 'rowkey2','schoolInfo:name','yale' put 'Student', 'rowkey2','schoolInfo:localtion','New Haven' put 'Student', 'rowkey3','baseInfo:name','maike' put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22' put 'Student', 'rowkey3','baseInfo:age','24' put 'Student', 'rowkey3','schoolInfo:name','yale' put 'Student', 'rowkey3','schoolInfo:localtion','New Haven' put 'Student', 'wrowkey4','baseInfo:name','maike-jack' 3.5 获取指定行、指定行中的列族、列的信息 # 获取指定行中所有列的数据信息 get 'Student','rowkey3' # 获取指定行中指定列族下所有列的数据信息 get 'Student','rowkey3','baseInfo' # 获取指定行中指定列的数据信息 get 'Student','rowkey3','baseInfo:name' 3.6 删除指定行、指定行中的列 # 删除指定行 delete 'Student','rowkey3' # 删除指定行中指定列的数据 delete 'Student','rowkey3','baseInfo:name' 四、查询 hbase中访问数据有两种基本的方式: 按指定rowkey获取数据:get方法; 按指定条件获取数据:scan方法。 scan可以设置begin和end参数来访问一个范围内所有的数据。get本质上就是begin和end相等的一种特殊的scan。 4.1Get查询 # 获取指定行中所有列的数据信息 get 'Student','rowkey3' # 获取指定行中指定列族下所有列的数据信息 get 'Student','rowkey3','baseInfo' # 获取指定行中指定列的数据信息 get 'Student','rowkey3','baseInfo:name' 4.2 查询整表数据 scan 'Student' 4.3 查询指定列簇的数据 scan 'Student', {COLUMN=>'baseInfo'} 4.4 条件查询 # 查询指定列的数据 scan 'Student', {COLUMNS=> 'baseInfo:birthday'} 除了列(COLUMNS)修饰词外,HBase还支持Limit(限制查询结果行数),STARTROW(ROWKEY起始行,会先根据这个key定位到region,再向后扫描)、STOPROW(结束行)、TIMERANGE(限定时间戳范围)、VERSIONS(版本数)、和FILTER(按条件过滤行)等。 如下代表从rowkey2这个rowkey开始,查找下两个行的最新3个版本的name列的数据: scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>2, VERSIONS=>3} 4.5 条件过滤 Filter可以设定一系列条件来进行过滤。如我们要查询值等于24的所有数据: scan 'Student', FILTER=>"ValueFilter(=,'binary:24')" 值包含yale的所有数据: scan 'Student', FILTER=>"ValueFilter(=,'substring:yale')" 列名中的前缀为birth的: scan 'Student', FILTER=>"ColumnPrefixFilter('birth')" FILTER中支持多个过滤条件通过括号、AND和OR进行组合: # 列名中的前缀为birth且列值中包含1998的数据 scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')" PrefixFilter用于对Rowkey的前缀进行判断: scan 'Student', FILTER=>"PrefixFilter('wr')"