Sql、Hive和Hbase的联系和区别
Hive是作为一个中间人,与sql和Hbase有着联系,而sql和Hbase没有直接的联系。所以我分两部分来谈清楚三者的联系和区别。
一、 首先来谈谈Hive和SQl的关系
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。
下图是hive的一个入口。先连接hadoop再连接hive,提供Hql(类sql)代码运行MapReduce任务,所以相对花费的时间会长一些,当然Hive也可以将底层计算引擎更换为Spark/Tez等。
跟sql的主要区别是在大数据计算框架下运行,适用于大数据量,并且可扩展性比较强,所以在今天到处是大数据的情况下,Hive非常受欢迎。其次Hive sql跟SQL大致是相同的,简单罗列几个不一样的地方:
1、Hive不支持等值连接
即不支持where a.id = b.id的连接方式,hive使用join连接。
•SQL中对两表内联可以写成:
select * from dual a,dual b where a.key = b.key;
•Hive中应为
select * from dual a join dual b on a.key = b.key;
2、分号字符
•分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:
select concat(key,c