浅谈hive和hbase的区别
剪切自:https://baijiahao.baidu.com/s?id=1594981025903171198&wfr=spider&for=pc
Hive是运行在Hadoop上的一个工具,准确地讲是一个搜索工具。当对海量数据进行搜索时,Hadoop的计算引擎是MapReduce。但是对MapReduce的操作和编程是非常复杂的。于是Hive的存在就让复杂的编程过程简化成了用SQL语言对海量数据的操作。这大大减轻了程序员的工作量。可以说,Hive的存在让海量数据的增删改查更加方便。其实从Hive的logo就可以看出Hive让大象变成了小蜜蜂,化繁为简是它最本质的亮点。
再来说说HBase,它是Hadoop的子项目,当然也可以理解为一个工具。Hadoop的数据运算是由MapReduce完成的,而数据存储是由HDFS完成的。HDFS是分布式存储,这是Hadoop存储数据的特点,但由此带来的问题就是数据的无序和散乱。HBase的产生,很好地解决了这一问题。HBase能够把这些数据映射成一张哈希表,那么,这些数据一旦成为具有实际存储意义的表之后,就由无序变得有序,从而对数据搜索和操作的效率大大提高了。
Hive和HBase都是Hadoop集群下的工具,Hive是对MapReduce的优化,而HBase则是HDFS数据存储的大管家。
表结构
HBASE表结构:建表时不需要限定表中的字段,只需要指定若干个列族;
插入数据是,列族中可以储存任意多个列(KV,列名&列值)
要查询某一个具体字段的值,需要指定的坐标:表名—>行键—>列族(ColumnFamily):列明(Qualifier)—>版本号
查询SHELL
创建表
create '表名',{NAME='列族名'}[,{NAME='列族名' [,VERSION => 3]}]
VERSION : 对应的能储存几个版本
查询有几个表
list
添加数据
put '表名','行号','列族名:变量名','value'[,版本号]
如果版本号不写,自动生成添加记录的时间戳
查看表数据
describe '表名'
查看数据
get '表名','行号'
查看数据的历史版本
get 't1','r1',{COLUMNS => '列族名:变量名',VERSIONS => 3}
查看历史三个版本