Hive实践
Posted 大数据的那些事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive实践相关的知识,希望对你有一定的参考价值。
创建一个内部表
1、建表语句:
create TABLE u_info
(
usrid STRING,
age STRING,
sex STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'
LINES TERMINATED BY '\n';
2、执行hive -f create_table.sql,建立了表u_info。
3、show tables会列出所有的表,执行desc u_info会列出u_info表的所有信息
4、准备好往u_info插入的数据文件a.txt,如下:
5、将a.txt中的数据加载到u_info表中
LOAD DATA LOCAL INPATH'/home/badou/hive_test/a.txt' OVERWRITE INTO TABLE u_info;
6、在hive中查询select *from u_info;发现表中已有数据,
7、执行hadoop fs -ls/user/hive/warehouse/u_info,去hdfs中查看,发现多了一个文件a.txt,
8、hive下执行drop tableu_info,执行show tables,发现hive下表格已经删除。
9、执行hadoop fs -ls/user/hive/warehouse/,发现下面的a.txt文件也已经删了。
创建一个外部表
1、建表语句:
2、执行hive -f create_ex_table.sql,建立表w_a、w_b
3、往w_a中导入a.txt,执行LOAD DATA LOCAL INPATH '/home/badou/hive_test/a.txt'OVERWRITE INTO TABLE w_a;
4、往w_b中导入b.txt,执行LOAD DATA LOCAL INPATH '/home/badou/hive_test/b.txt'OVERWRITE INTO TABLE w_b;
5、在hive下和hdfs中都能查询到这两张表的数据了。
6、在hive下执行drop table w_a;把w_a删除。show tables时则没有w_a这个表了。
7、执行hadoop fs -ls /user/hive/warehouse/,发现/user/hive/warehouse/w_a还在,如下:
8、执行hadoop fs -ls /user/hive/warehouse/w_a,发现/user/hive/warehouse/w_a/a.txt还在,这说明外部表在hive下drop时,只是删除了元数据,真实数据还没删除。
9、在hive下把表w_a给drop掉了,如何恢复呢?重新执行建表语句:
10、执行select,发现w_a又完全恢复过来了。
两张表join
1、在hive下执行select a.*, b.* from w_a a join w_b b ona.usrid=b.usrid;从日志信息可以看出,在执行这个sql时,底层跑了一个mapreduce。
2、select * from w_a;不会有mapreduce,相当于直接cat出来。但是select usrid from w_a有个mapreduce
以上是关于Hive实践的主要内容,如果未能解决你的问题,请参考以下文章