1.2、hive和rdbms的对比
对比项 | hive | rdbms |
查询语言 | HQL | sqL |
数据存储 | HDFS | raw Device or Local FS |
执行器 | MapReduce | Executor |
数据插入 | 支持批量导入/单条插入 | 支持单条或批量导入 |
数据操作 | 覆盖追加 | 行级更新删除 |
处理数据规模 | 大 | 小 |
执行延迟 | 高 | 低 |
分区 | 支持 | 支持 |
索引 | 0.8版本之后加入简单索引 | 支持负责的索引 |
扩展性 | 高(好) | 有限(差) |
数据加载模式 | 读时模式(快) | 写时模式(慢) |
应用场景 | 海量数据查询 | 实时查询 |
总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做海量离线数据
统计分析,也就是数据仓库。
1.3、hive和hbase的差别
①hive是建立在hadoop之上为了降低MapReduce编程复杂度的ETL工具
HBase是为了弥补Hadoop对实时操作的缺陷
②hive表是逻辑表,因为hive的本身并不能做数据存储和计算,而是完全依赖hadoop
HBase 是物理表,提供了一张超大的内存Hash表来存储索引,方便查询
③ hive是数据仓库工具,需要全表扫描,就用hive,因为hive是文件存储
HBase 是数据库,需要索引访问,则用HBase,因为HBase是面向列的NoSQL数据库
④ hive表中存入数据(文件)时不做校验,属于读模式存储系统
HBase表插入数据时,会和RDBMS一样做Schema校验,所以属于写模式存储系统
⑤hive不支持单行记录操作,数据处理依靠MapReduce,操作延时高
HBase支持单行记录的CRUD,并且是实时处理,效率比Hive高的多