Hbase笔记3 shell命令
http://www.jb51.net/article/31172.htm 这个文章写得挺好
1.HBase的shell就和我们用Mysql的终端是一个意思,比如我们安装好Mysql,配置好了环境变量,命令行中输入mysql -uroot -p密码 就能直接进入mysql
的终端,在这里HBase也是一个意思。
如何进入HBase的终端呢,使用命令 hbase shell 进入命令行模式。在这里,我们能对HBase的操作是很有限的,在PPT19中,基本就包含了他百分之八九十的操作。
没有复杂的查询,因为复杂的查询不是HBase的强项,它能够进行海量数据的简单查询。
PPT19也有展示
创建表 create '表名称', '列族名称1','列族名称2','列族名称N'
create '表名称' ,{NAME=>''},{NAME=>''},{NAME=>''},{NAME=>''}
其中每一个花括号都是一个列族,花括号中的内容格式是一个或多个以逗号分隔的 xxx=>xxx,这个对列族做详细定义时使用的方式。=>左边的部分是名称,右边是值。
举个例子:create 'user',{NAME=>'info',VERSIONS=>'5'},{NAME=>'detail',VERSION='4'}
这表示创建表名为user的表,有两个列族,info和detail,info这个列族保留版本是数为5,detail列族保留版本数为4
注意:创建表的时候,不需要指定行键,行键是默认存在的。在添加的时候,在表明后面,直接指定航简单 值就可以了。
添加记录 put '表名称', '行名称', '列名称:', '值'(如果不写时间戳,默认当前时间)
查看记录 get '表名称', '行键名称'
查看表中的记录总数 count '表名称'
删除记录 delete '表名' ,'行键名称' , '列名称'(删除指定行健所对应的那一整列)
删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看所有记录 scan "表名称" (全表扫描,类似SELECT * FROM 表名)
查看某个表某个列中所有数据 scan "表名称" , {COLUMNS=>'列族名称:列名称'}
更新记录 就是重写一遍进行覆盖,还是使用PUT操作
下面举例:
创建表: create 'user','user_id','adress','info'
创建表的时候,表名称和列族名称,都需要带引号,表与列族之间、列族与列族之间用逗号隔开,末尾不用分号结尾
查看表: list
list命令: 查看都有什么表,该命令列出了表的名称,没有具体的内容。
查看表具体信息:describe 'user'
describe 表名 查看某一个表的具体信息,表名需要用引号括起来。
该命令会显示很多的东西,虽然我们创建表的时候很简单,但是它有很多的默认值,在这里用这条命令,都会给你显示出来。
显示的内容分为左右两部分,左边的标题为DESCRIPTION,这是表的详细信息,右边是ENABLE,显示表是否启用。在左边的
详细信息部分中,最开始是表名称,然后会有很多的大括号,每个大括号中,都是列簇的信息,我们在创建表的时候只指定了列簇的名称,
其他的都没指定,但是他们都是有默认值的,在这里也都显示出来了。如果我们学的深入了,其实在创建表的时候,可以不像上面那么简单,
可以对这些参数进行设置的。
删除表: disabled 'user'
drop 'user'
插入记录: put 'user','zhangyifei','address:city','beijing'
put 'user','zhangyifei','info:age','22'
获取记录: get 'user','zhangyifei'
get 'user','zhangyifei','adress'
更新记录: put 'user','zhangyifei','info:age','24'
put 'user','zhangyifei','info:age','25'
put 'user','zhangyifei','info:age','26'
put 'user','zhangyifei','info:age','27'
get 'user','zhangyifei','info:age' 验证数据更新成功没有(默认显示最新的值)
获取版本信息 get 'user','zhangyifei','{COLUMN=>'info:age',VERSIONS} 显示的是最新的版本
get 'user','zhangyifei','{COLUMN=>'info:age',VERSIONS=>2} 显示的是最新2个的版本
get 'user','zhangyifei','{COLUMN=>'info:age',VERSIONS=>3} 显示的是最新的3个版本
get 'user','zhangyifei','{COLUMN=>'info:age',VERSIONS=>4} 显示的是最新的4个版本,却没有显示4个版本,只显示了3个,我们之前
确实插入了4次啊(24、25、26、27),原因是:我们用describe命令
查看表的详细信息的时候,在那个大括号中,是对列簇信息的描述,
其中有一项,就是版本数(VERSIONS=>'3'),我们在创建表的时候没有指定,它默认
是3.可以改成4,但是是在创建表的时候该。具体该怎么写呢,其实就是把
description下面的东西复制,然后前面加个create就行。
create 'user',{NAME=>'info',VERSIONS=>'5'},{NAME=>,VERSION=>},{}...
获取单元格数据的某个版本数据
get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}
这里需要用知道具体的时间戳,时间戳如果不指定,就是当时的时间,但是我们以后很难知道当时时间是什么,
所以我们可以指定时间戳到底是什么。
全表扫描: scan 'user'
get 'users','xiaoming',{COLUMN=>'info:age',VERSION=>4}
get 'users','xiaoming',{COLUMN=>'info:age',VERSION=>1384092294281} 取某一条具体的值,也就是说,表名+列族:列名+时间戳 确定某一个具体的值
时间戳如果在插入的时候不指定,他是按当前时间来算的,那么再以后的查找的时候,我们不知道当时插入时候的当前时间,该怎么办。时间戳其实是可以在插入数据的时候自己指定的。
版本数在创建表的时候,需要指定。
scan 表 扫描整张表
get 命令是对某一行进行查找,查找时需要制定表名和行健
scan命令是对表进行全表扫描,查找时指定表名即可
删除某一列 delete 'users','xiaoming','info:age' 我们在删除列的时候会不会影响其他的记录,肯定不会,因为我们这个命令里面指明了行健xiaoming
删除某一条记录(行) deleteall 'user','xiaoming' (deteleall 表名,行健)
查看表的记录(行)数 count 'user'
清空表数据: truncate 'user' //实际上是执行3步操作,disabled、drop、create ,此时表示存在的,但是里面没数据
同一个表中的,两条记录,他们的列族是一样的,但是列族中的列可能是不一样的。所以可以这样说,列属于列族,同样也属于记录,即使我们有两行记录,都在
同一个列族下有一个同名的列,我觉得他们也没有什么关系,我们delete某一条记录的列,另一条记录是不受影响的。
hbase表中的每个列,都归属与某个列族。列族是表的schema的一部分(而列不是),必须在使用表之前定义。
以网上的一个学生成绩表的例子来演示hbase的用法。
name | grad | course | |
math | art | ||
Tom | 5 | 97 | 87 |
Jim | 4 | 89 | 80 |
这里grad对于表来说是一个只有它自己的列族,course对于表来说是一个有两个列的列族,这个列族由两个列组成math和art,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics等相应的列添加入course列族。
(1)建立一个表scores,有两个列族grad和courese
可以使用list命令来查看当前HBase里有哪些表。使用describe命令来查看表结构。(记得所有的表明、列名都需要加上引号)
(2)按设计的表结构插入值:
put ‘scores','Tom','course:math','97′
put ‘scores','Tom','course:art','87′
put ‘scores','Jim','grade','4′
put ‘scores','Jim','course:','89′ (course这个列族下面有两个列,为什么还可以省略,默认添加到哪个列呢)
put ‘scores','Jim','course:','80′
这样表结构就起来了,其实比较自由,列族里边可以自由添加子列很方便。如果列族下没有子列,加不加冒号都是可以的。
Hbase笔记3 shell命令的更多相关文章
- 学习笔记之shell命令
linux shell命令学习笔记:~这里只是对自己一些常用但是不熟悉的的命令进行记录 -------------------------------------------------------- ...
- HBase总结(二十)HBase经常使用shell命令具体说明
进入hbase shell console $HBASE_HOME/bin/hbase shell 假设有kerberos认证,须要事先使用对应的keytab进行一下认证(使用kinit命令),认证成 ...
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/de ...
- hbase学习一 shell命令操作
基本操作: #命名空间级别: #列出所有命名空间 hbase> list_namespace #新建命名空间 hbase> create_namespace 'ns1' #删除命名空间 h ...
- HDFS shell命令行常见操作
hadoop学习及实践笔记—— HDFS shell命令行常见操作 附:HDFS shell guide文档地址 http://hadoop.apache.org/docs/r2.5.2/hadoop ...
- HBase基本shell命令
HBase基本shell命令 以下shell命令都是经过测试,正常展示,若有不足,还望指点! 1.创建表 create ‘表名称’,‘列族名称1’,‘列族名称1’create 'test_M_01', ...
- Hbase Shell命令
1 启动HBase shell 2 HBase shell 命令 3 我们将以“一个学生成绩表”的例子来详细介绍常用的 HBase 命令及其使用方法. 这里 grad 对于表来说是一个列,course ...
- hbase 学习笔记二----shell
Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统. Hbase不同于一般的关系型数据库 ...
- HBase的Shell命令
1.HBase提供了一个shell的终端给用户交互 2.HBase Shell的DDL操作 (1)先进入HBase的 Shell命令行,即HBASE_HOME/bin/hbase shell …… & ...
随机推荐
- (未解决)WIN8下使用POWERSHELL安装python easy_install无法成功
按照https://pypi.python.org/pypi/setuptools#windows-8-powershell介绍的方法, 安装未成功.安装似乎没有启动, 也未安装成功. Windows ...
- F28379D烧写双核程序(在线&离线)
烧写双核程序前需知在分别对F28379D的CPU1和CPU2两个核进行烧写程序时,需要在CCS中建立两个工程,独立编写两个核的程序.如controlSUITE中提供的双核程序例程: 1. 在线1.1 ...
- 使用timeit模块 测试两种方式生成列表的所用的时间
from timeit import Timer def test(): li=[] for i in range(10000): li.append(i) def test2(): li=[i fo ...
- 左侧菜单栏右侧内容(改进,有js效果)
(如有错敬请指点,以下是我工作中遇到并且解决的问题)上一篇文章是简洁版 这是上一篇文章的改进. 上一篇文章的左侧菜单是没有子目录的. 这是效果图: 左侧菜单代码: <div class=&quo ...
- .apache.commons.io 源代码学习(一)
java的初学者,准备通读各种高水平源代码,提升能力. 为了避免自己的惰性,写博客. 版本:2.5 开发平台:netbeans. 今天是第一天,网上先看个例子:http://www.importnew ...
- POJ 2528.Mayor's posters-线段树(成段替换、离散数据、简单hash)
POJ2528.Mayor's posters 这道题真的是线段数的经典的题目,因为数据很大,直接建树的话肯定不可以,所以需要将数据处理一下,没有接触离散化的时候感觉离散化这个东西相当高级,其实在不知 ...
- (5)C#运算符
运算符 参照javase (7)java基础知识-原码.反码.补码.运算符
- docker网络及Dockerfile
1.制作镜像 使用阿里的yum源,网址:https://opsx.alibaba.com/mirror,或者mirrors.aliyun.com,点击帮助,就会有弹框出来. docker pull c ...
- nginx+tomcat负载使用
Nginx+Tomcat搭建 版本 操作系统版本 Centos 6.4 Nginx版本 nginx-1.3.15.tar.gz JDK版本 jdk-7u71-linux-i586 //jdk1.7 ...
- 【bzoj1226】【[SDOI2009]学校食堂Dining】状压dp
(上不了p站我要死了,侵权度娘背锅) Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人 ...