Hive与HBase有什么区别

发布时间:2021-12-09 09:13:40 作者:小新
来源:亿速云 阅读:6735

这篇文章主要为大家展示了“Hive与HBase有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hive与HBase有什么区别”这篇文章吧。

两者的共同点:
1.hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储
两者的区别:

2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目

3.想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop

4.Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。

5.Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑

6.hive借用hadoop的MapReduce来完成一些hive中的命令的执行

7.hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。

8.hbase是列存储。所以Hbase可以对数据进行增改删等操作,但Hive是行的,只能追加数据。

9.hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。

10.hive需要用到hdfs存储文件,需要用到MapReduce计算框架。

Hive与HBase有什么区别

Chapter 2: Hive操作

基础操作:

登录Hadoop的Master节点--》切换到Hadoop帐号-->使用Hive查看表,并exit退出:

Hive与HBase有什么区别

\

联合查询:

内连接:
hive> SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

查看hive为某个查询使用多少个MapReduce作业
hive> Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

外连接:
hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);

in查询:Hive不支持,但可以使用LEFT SEMI JOIN
hive> SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);

CREATE TABLE ... AS SELECT:新表预先不存在
hive>CREATE TABLE target AS SELECT col1,col2 FROM source;


视图查询:

创建视图:
hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;

查看视图详细信息:

hive> DESCRIBE EXTENDED valid_records;

外部表、内部表、分区表的区别及操作:

此时,会在hdfs上新建一个tt表的数据存放地,例如,笔者是在 hdfs://master/input/table_data

上传hdfs数据到表中:

load data inpath '/input/data' into table tt;

view source      print      ?

1.      load data inpath '/input/data' into table tt;    


此时会将hdfs上的/input/data目录下的数据转移到/input/table_data目录下。

删除tt表后,会将tt表的数据和元数据信息全部删除,即最后/input/table_data下无数据,当然/input/data下再上一步已经没有了数据!

如果创建内部表时没有指定location,就会在/user/hive/warehouse/下新建一个表目录,其余情况同上。

注意的地方就是:load data会转移数据!

2. 外部表:

create external table et (name string , age string);

view source      print      ?

1.      create external table et (name string , age string);    


此时,会在/user/hive/warehouse/新建一个表目录et

load data inpath '/input/edata' into table et;

此时会把hdfs上/input/edata/下的数据转到/user/hive/warehouse/et下,删除这个外部表后,/user/hive/warehouse/et下的数据不会删除,但是/input/edata/下的数据在上一步load后已经没有了!数据的位置发生了变化!本质是load一个hdfs上的数据时会转移数据!

3. 分区表

Hive与HBase有什么区别

为内部表某个分区导入数据,Hive将建立目录并拷贝数据到分区当中
LOAD DATA LOCAL INPATH '${env:HOME}/california-employees'
INTO TABLE employees
PARTITION (country = 'US', state = 'CA');
为外部表某个分区添加数据
ALTER TABLE log_messages ADD IF NOT EXISTS PARTITION(year = 2012, month = 1, day = 2)
LOCATION 'hdfs://master_server/data/log_messages/2012/01/02';
备注:Hive并不关心分区,目录是否存在,是否有数据,这会导致没有查询结果

从本地文件系统中加载数据。 LOAD DATA LOCAL INPATH "/opt/data/1.txt"> 从HDFS中加载数据 LOAD DATA INPATH "/data/datawash/1.txt" INTO TABLE table1; 意思是从HDFS的/data/datawash/1.txt写入到table1所在目录。
关于加载中的OVERWRITE是这样。 LOAD DATA LOCAL INPATH "/opt/data/1.txt" OVERWRITE INTO TABLE table1; 如果加了OVERWRITE,则覆盖原先已经存在的数据,如果你确定原先没有数据,则可以写上。


Chapter 3: HBase操作

语法:

Hive与HBase有什么区别

 Hive与HBase有什么区别

操作 命令表达式
创建表

create 'table_name', 'family1','family2','familyN'

添加(更新)记录 put 'table_name', 'rowkey', 'family:column', 'value'
查看记录get 'table_name', 'rowkey'
查看表中的记录总数count 'table_name'
删除记录delete 'table_name' ,'rowkey' , 'family:column'
deleteall 'table_name','rowkey'
删除一张表disable 'table_name'
drop 'table_name'
查看所有记录scan "table_name" ,很危险 最好加LIMIT : scan 'table_name',LIMIT=>10
查看某个表某个列中所有数据scan "table" , {COLUMNS =>['family1:','family2' VERSIONS=2]} VERSIONS 选填

练习:

Hive与HBase有什么区别

status //查看服务器状态

Hive与HBase有什么区别

version //查询Hbase版本

Hive与HBase有什么区别

create 'test','course','device' //创建表

Hive与HBase有什么区别

list //列出所有的表

Hive与HBase有什么区别

exists 'test' //查询表是否存在

Hive与HBase有什么区别

put 'test','Li Lei','course:Math','90'

Hive与HBase有什么区别

put 'test','Han Meimei','course:English','92' //插入记录

Hive与HBase有什么区别

get 'test','Li Lei' //获取一个Id的所有数据

Hive与HBase有什么区别

get 'test','Li Lei','device' //获取一个ID,一个列族的所有数据

Hive与HBase有什么区别

get 'test','Li Lei','device:laptop' // 获取一个ID,一个列族中的一个列的所有数据

Hive与HBase有什么区别

更新一条记录:

put 'test','Li Yang','device:laptop','Asus'

Hive与HBase有什么区别

count 'test' //查看表中有多少行

Hive与HBase有什么区别

delete 'test','Li Yang','device:laptop‘ //删除id为’Li Yang’的值的’device:laptop’字段

Hive与HBase有什么区别

deleteall 'test','Li Yang‘ //删除整行

Hive与HBase有什么区别

删除表:
disable 'test'
drop 'test‘

退出:

exit
 

以上是“Hive与HBase有什么区别”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. hive与hbase整合
  2. hbase与hive 小结

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hive hbase

上一篇:TCGA数据库的normal样本不够该怎么办

下一篇:进程和线程中的锁有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》