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 …… & ...
随机推荐
- 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】
转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ...
- C++ 采集音频流(PCM裸流)实现录音功能
与上一篇的“C++ 播放音频流(PCM裸流)” 点击打开链接 相对应,本篇是关于用C++实现录音功能的.同样是直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用,也可以下载本人上传的相关 ...
- 1.使用python连接odps并获取项目
from odps import ODPS # 直接从odps模块导入ODPS这个类 # 然后传入相应的参数进行初始化即可 ''' ODPS函数接收的参数如下: access_id: 你的access ...
- Visual Studio跨平台开发(2):Xamarin.iOS基本控制项介绍
前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iOS的专案目录架构以及基本控制项进行说明. 包含UIButton,UISlider,UISwitc ...
- MSSQL横列转纵列
上篇我们说到了纵列转横列,这篇讲下横列转纵列,具体代码: 1.建表 CREATE TABLE [dbo].[EndLongChangeAcross]( ,) NOT NULL, ) NOT NULL, ...
- 去除整站下载文件中的tppabs等冗余代码
用TeleprotUltra复制了一个网站,结果网页中出现了很多形如tppabs=””的冗余代码,点击vs中的“在文件中查找”图标,打开“查找和替换”对话框,转到“快速替换”,然后进行以下设置: “查 ...
- UVA 624 CD【01背包+路径记录】
You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o ...
- 51nod 1001 数组中和等于K的数对【二分查找/排序】
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组 ...
- Spring Cloud 微服务架构解决方案
1 理解微服务 1.1 软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1.1.1 单体架构 特点: 1.所有的功能集成在一个项目工程中. 2.所有的功能打一个 ...
- ELK集群
kafka集群-------------------1. 下载wget http://mirror.rise.ph/apache/kafka/0.11.0.0/kafka_2.12-0.11.0.0. ...