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

3show tables会列出所有的表,执行desc  u_info会列出u_info表的所有信息 

 

4、准备好往u_info插入的数据文件a.txt,如下:

Hive实践

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;发现表中已有数据,

Hive实践

7、执行hadoop fs -ls/user/hive/warehouse/u_info,去hdfs中查看,发现多了一个文件a.txt

Hive实践

8hive下执行drop tableu_info,执行show tables,发现hive下表格已经删除。

9、执行hadoop fs -ls/user/hive/warehouse/,发现下面的a.txt文件也已经删了。


创建一个外部表

1、建表语句:

Hive实践

2、执行hive -f create_ex_table.sql,建立表w_aw_b

Hive实践

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这个表了。

Hive实践

7、执行hadoop fs -ls /user/hive/warehouse/,发现/user/hive/warehouse/w_a还在,如下:

Hive实践

8、执行hadoop fs -ls /user/hive/warehouse/w_a,发现/user/hive/warehouse/w_a/a.txt还在,这说明外部表在hivedrop时,只是删除了元数据,真实数据还没删除。

9、在hive下把表w_adrop掉了,如何恢复呢?重新执行建表语句:

Hive实践

10、执行select,发现w_a又完全恢复过来了。

Hive实践


两张表join

1、在hive下执行select a.*, b.* from w_a a join w_b b ona.usrid=b.usrid;从日志信息可以看出,在执行这个sql时,底层跑了一个mapreduce

2select *  from w_a;不会有mapreduce,相当于直接cat出来。但是select usrid from w_a有个mapreduce


以上是关于Hive实践的主要内容,如果未能解决你的问题,请参考以下文章

hive---实践

Hive实践(hive0.12)

Spark 实践 | Hive SQL 迁移 Spark SQL 在滴滴的实践

原创干货 | Hive与HBase的集成实践

Hive数据仓库实践

Hive实践