HBASE一些简单的查询语句
http://blog.csdn.net/sustbeckham/article/details/6631790
这里我们用一个学生成绩表作为例子,对HBase的基本操作和基本概念进行讲解:
下面是学生的成绩表:
name grad course:math course:art
Tom 1 87 97
Jerry 2 100 80
这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成:math和art,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics等相应的列添加入course列族.
有了上面的想法和需求,我们就可以在HBase中建立相应的数据表啦!
1, 建立一个表格 scores 具有两个列族grad 和courese
hbase(main):002:0> create 'scores', 'grade', 'course'
0 row(s) in 4.1610 seconds
2,查看当先HBase中具有哪些表
hbase(main):003:0> list
scores
1 row(s) in 0.0210 seconds
3,查看表的构造
hbase(main):004:0> describe 'scores'
{NAME => 'scores', IS_ROOT => 'false', IS_META => 'false', FAMILIES => [{NAME => 'course', BLOOMFILTER => 'false', IN_MEMORY => 'false', LENGTH => '2147483647', BLOCKCACHE => 'false', VERSIONS => '3', TTL => '-1', COMPRESSION => 'NONE'}, {NAME => 'grade', BLOOMFILTER => 'false', IN_MEMORY => 'false', LENGTH => '2147483647', BLOCKCACHE => 'false', VERSIONS => '3', TTL => '-1', COMPRESSION => 'NONE'}]}
1 row(s) in 0.0130 seconds
4, 加入一行数据,行名称为 Tom 列族grad的列名为”” 值位1
hbase(main):005:0> put 'scores', 'Tom', 'grade:', '1'
0 row(s) in 0.0070 seconds
5,给Tom这一行的数据的列族添加一列 <math,87>
hbase(main):006:0> put 'scores', 'Tom', 'course:math', '87'
0 row(s) in 0.0040 seconds
6,给Tom这一行的数据的列族添加一列 <art,97>
hbase(main):007:0> put 'scores', 'Tom', 'course:art', '97'
0 row(s) in 0.0030 seconds
7, 加入一行数据,行名称为 Jerry 列族grad的列名为”” 值位2
hbase(main):008:0> put 'scores', 'Jerry', 'grade:', '2'
0 row(s) in 0.0040 seconds
8,给Jerry这一行的数据的列族添加一列 <math,100>
hbase(main):009:0> put 'scores', 'Jerry', 'course:math', '100'
0 row(s) in 0.0030 seconds
9,给Jerry这一行的数据的列族添加一列 <art,80>
hbase(main):010:0> put 'scores', 'Jerry', 'course:art', '80'
0 row(s) in 0.0050 seconds
10,查看scores表中Tom的相关数据
hbase(main):011:0> get 'scores', 'Tom'
COLUMN CELL
course:art timestamp=1224726394286, value=97
course:math timestamp=1224726377027, value=87
grade: timestamp=1224726360727, value=1
3 row(s) in 0.0070 seconds
11,查看scores表中所有数据
hbase(main):012:0> scan 'scores'
ROW COLUMN+CELL
Tom column=course:art, timestamp=1224726394286, value=97
Tom column=course:math, timestamp=1224726377027, value=87
Tom column=grade:, timestamp=1224726360727, value=1
Jerry column=course:art, timestamp=1224726424967, value=80
Jerry column=course:math, timestamp=1224726416145, value=100
Jerry column=grade:, timestamp=1224726404965, value=2
6 row(s) in 0.0410 seconds
12,查看scores表中所有数据courses列族的所有数据
hbase(main):013:0> scan 'scores', ['course:']
ROW COLUMN+CELL
Tom column=course:art, timestamp=1224726394286, value=97
Tom column=course:math, timestamp=1224726377027, value=87
Jerry column=course:art, timestamp=1224726424967, value=80
Jerry column=course:math, timestamp=1224726416145, value=100
4 row(s) in 0.0200 seconds
上面就是HBase的基本shell操作的一个例子,可以看出,hbase的shell还是比较简单易用的,从中也可以看出HBase shell缺少很多传统sql中的一些类似于like等相关操作,当然,HBase作为BigTable的一个开源实现,而BigTable是作为 google业务的支持模型,很多sql语句中的一些东西可能还真的不需要.
分享到:
相关推荐
以下是一些主要的HBase查询客户端工具及其详细说明: 1. **HBase Shell**:这是HBase自带的一个命令行接口,用户可以通过Java REPL(Read-Eval-Print Loop)与HBase交互。HBase Shell提供了创建表、删除表、插入...
本示例“基于Mysql的表转HBase小Demo”提供了一个简单的解决方案,将Mysql中的数据转换并存储到HBase这种分布式列式数据库中。这个过程对于那些希望从传统的关系型数据库迁移到NoSQL数据库,尤其是对大规模数据进行...
假设已经成功配置并连接到了 Phoenix/HBase,接下来可以尝试执行一些简单的 SQL 查询来验证连接的有效性。例如,如果有一个名为 `sales` 的 HBase 表,可以尝试执行如下 SQL 查询: ```sql SELECT * FROM sales ...
动态query封装:类似于myibatis,可以使用xml配置动态语句查询hbase。 insert,update支持: 建立在hbase的checkAndPut之上。 hbase多版本支持:提供接口可以对hbase多版本数据进行查询,映射。 ...
- **查询能力**:Hive 支持复杂的查询语句,而 HBase 支持简单的键值查询。 - **应用场景**:Hive 更适合批处理任务,而 HBase 更适合实时查询。 综上所述,Hive 和 HBase 在 Hadoop 生态系统中扮演着不同的角色,...
为了兼容以前从关系型数据库中查询数据的接口, 让hbase可以通过sql语句来查询其中的数据. hive有这样的功能, 他支持通过类似sql语句的语法来操作hbase中的数据, 但是速度太慢了, 因为hive本身就不是用来查询数据的, ...
6. **Hive**:尽管当前版本的Hive不直接支持HBase,但即将发布的版本(0.7.0)将支持这一特性,使得用户可以通过类SQL语句访问HBase。 #### HBase数据模型 HBase采用了独特的数据模型设计,主要包括以下几个方面:...
用户可以通过各种SQL客户端工具(如SQuirrel SQL客户端)来连接HBase服务器,并使用标准的SQL语句来操作数据。 总而言之,Apache Phoenix提供了一个轻量级的SQL层,为那些熟悉关系型数据库概念的开发者们提供了一个...
此外,`spring-boot-starter-hbase`还提供了对HBase的查询语句进行封装,比如RowKey的构造、Scan和Get操作的简化,使得查询更加直观且易于理解。例如,通过简单的API调用,就可以实现基于行键的单行查询、多行查询,...
可以使用如下SQL语句创建表: ```sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255), registration_date DATE ); ``` 接着,我们填充一些测试数据: ```sql INSERT INTO ...
这种模式使得开发者无需直接编写HBase的Java代码,而是通过SQL语句即可操作数据。Phoenix支持标准的SQL语法,包括SELECT、JOIN、GROUP BY、ORDER BY等,使得数据分析更加灵活。 其次,安装和配置"phoenix-hbase-1.4...
Hive是基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,允许用户使用SQL语句来查询存储在Hadoop中的大规模数据集。 - **特性:** - **SQL支持**:支持基本的SQL...
4. **动态Query封装**:类似于MyBatis的XML配置,SimpleHbase允许开发者定义动态查询语句,可以根据不同的参数执行不同的查询逻辑,增强了代码的灵活性。 5. **Insert和Update支持**:基于HBase的checkAndPut,...
Hive是建立在Hadoop上的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。而HBase则是一种分布式、可扩展的NoSQL数据库,它提供了高...
此外,Django的ORM(对象关系映射)层使得与数据库交互变得更加简单,无需编写复杂的SQL语句。 LayUI则是一款轻量级的前端框架,它的组件丰富,样式美观,易于上手。在本项目中,LayUI提供了用户界面的设计,包括...
Hive 是一种数据仓库工具,可以用来进行数据提取、转换和加载(ETL),同时提供了一种 SQL 类似的查询语言——HiveQL,使得管理大量数据变得更加简单。而 HBase 是一个分布式的、面向列的开源数据库,非常适合实时读...
Hive是一个建立在Hadoop上的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能(HiveQL),可以将SQL语句转换为MapReduce任务进行运行。 对于不同版本的Hadoop、HBase和Hive,它们...
Bigtable是Google用于存储结构化数据的分布式存储系统,而HBase就是模仿Bigtable,试图“修正”GFS和MapReduce在随机访问方面的一些不足。 6. HBase的内部工作原理:HBase采用列式存储模型,以列族为基本单位进行...
通过 Phoenix,可以将复杂的 MapReduce 或 Hive 查询转换为简单的 SQL,降低了开发复杂度,提升了数据处理效率。 总结来说,"apache-phoenix-4.9.0-HBase-1.1-bin.tar.gz" 提供了一个强大的 SQL 接口,使 HBase ...