Apache Hive--DML--insert&多重插入&动态分区| 学习笔记

发者学堂课程【大数据Hive教程精讲Apache Hive--DML--insert&多重插入&动态分区】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/90/detail/1376


Apache Hive--DML--insert&多重插入&动态分区

 

简介:

1.   Lnsert

2.   Multi lnserts多重插入

3.   Dynamic partition inserts动态分区插入

 

Lnsert:

Hive中 insert 主要是结合 Select 查询语句使用,将查询结果插入到表中,例如:insert overwrite table stu_buck

select * from student cluster by(Sno);

需要保证查询结果列的数目和需要插入数据表格的列数目一致.

如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换,但是不能保证转换一定成功,转换失败的数据将会为 NULL。

可以将一个表查询出来的数据插入到原表中,结果相当于自我复制了一份数据。


Multi lnserts多重插入:

from source_table

insert overwrite tabletablename1 [partition (partcol1=val1,partclo2=val2)]

select_statement1

insert overwrite tabletablename2 [partition (partcol1=val1,partclo2=val2)]

select_statement2..


Dynamic partition inserts动态分区插入:

INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...)select_statement FROM from_statement

Apache Hive--DML--insert&多重插入&动态分区| 学习笔记

Apache Hive--DML--insert&多重插入&动态分区| 学习笔记

[root@node-1 hivedata]# rzrz waiting to receive.

starting zmodem transfer. Press ctr1+c to cance1.Transferring students.txt....

100%   526 bytes    526 bytes/sec  00:00:01  o Errors

[root@node-1 hivedata]# hadoop fs -mkdir /stu

[root@node-1 hivedataj# hadoop fs -put students.txt /stu

[root@node-1 hivedata]# vi a

动态分区是通过位置来对应分区值的。原始表select出来的值和输出 partition的值的关系仅仅是通过位置来确定的,和名字并没有关系。

动态分区插入

set hive.exec.dynamic.partition=true;-#是否开启动态分区功能,默认false关闭。

set hive.exec.dynamic.partition.mode=nomstrict;动态分区的模式,默认strict,表示必须指定至少一个分区为静态

需求:

将dynamic_ partition_table中的数据按照时间(day),插入到目标表d p t的相应分区中。

原始表:

create table dynamic_partition_table(day string, ip string)row format delimited fields terminated by " ,";

load data local inpath '/root/hivedata/dynamic _partition_table.txt' into table dynamic partition_table;

2015-05-10,ip1

2015-05-10,ip2

2015-06-14,ip3

2015-06-14,ip4

2015-06-15,ip1

2015-06-15,ip2

目标表:

create table d_p_t(ip string) partitioned by (month string,day string);

动态插入:

insert overwrite table d_p_t partition (month, day)

select ip, substr (day,1,7) as month, day

from dynamic partition_table;

查询结果导出到文件系统

3、将查询结果保存到指定的文件目录(可以是本地,也可以是hdfs)insert overwrite local directory '/home/hadoop/test'

select * from t_p;

Apache Hive--DML--insert&多重插入&动态分区| 学习笔记

上一篇:分组排序案例分析| 学习笔记


下一篇:WordCount 案例 Mapper| 学习笔记