大数据学习之路34-hive的DML语法,加载数据,load,insert,多重插入

DML:

1.加载数据到表中:

load

insert

插入单条数据:insert into table t_seq values('10','xx','beijing',28);

这条语句的本质是,会执行一个mapreduce,将这条数据生成一个文件。文件的格式是这个表所要求的格式。

我们在hive中也可以访问hdfs:

dfs -ls /;

这时候我们会发现,这时候查询的执行速度会比在linux终端执行的时候快很多。这是因为什么呢?

因为要使用hdfs查询的话,要先启动java的jvm,但是如果启动了hive,就相当于已经启动了jvm,所以在hive中查询的时候,只需要调用一下java程序即可,所以会快很多。

多重插入:

为什么需要多重插入?我们可以先看看单个插入的效果

假如有一个需求,从t_day01中筛选出不同的数据插入到另外两张表中。
 

insert overwrite table t_day01_lt_400 partition(day='1')

select ip,url,staylong from t_day01 where staylong<400;

insert overwrite table t_day01_gt_400 partition(day='1')

select ip,url,staylong from t_day01 where staylong>400;

但是以上实现方式有一个弊端,两次筛选job,要分别启动两次mr过程,要对同一份源表数据进行两次读取

如果使用多重插入语法,则可以避免上述弊端,提高效率,源表只要读取一次即可。

from t_day01

insert overwrite  table t_day01_lt_400 partition(day='2')

select ip,url,staylong where staylong < 400

insert overwrite table t_day01_gt_400 partition(day='2')

select ip,url,staylong where staylong > 400;

 

你可能感兴趣的:(大数据)