Hive之insert into與insert overwrite區別


一、實踐先行,直接上手

1. hive 表及數據准備

建表,並插入初始數據。向表中插入

hive> use test;
hive> create table kwang_test (id int, name string);
hive> insert into kwang_test values(1,'kwang');
hive> insert into kwang_test values(2,'fwang');
hive> select * from kwang_test;
OK
1       kwang
2       fwang

2. insert into 操作

insert into 語法:

INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

通過 insert into 語句向 kwang_test 表中插入一條數據,並查詢結果。

hive> insert into table kwang_test values(3,'kk');
hive> select * from kwang_test;
OK
1       kwang
2       fwang
3       kk

3. insert overwrite 操作

insert overwrite 語法:

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;

insert overwrite 標准語法的數據來源是通過 select 語法來插入,但為了方便,直接插入 values。通過 insert overwrite 語句向 kwang_test 表中插入一條數據,並查詢結果。

hive> insert overwrite table kwang_test values(4,'zz');
hive> select * from kwang_test;
OK
4       zz

4. 兩者異同

看到上面的現象與結果,基本能夠明白 insert into 與insert overwrite 之間的異同,兩者都可以向 hive 表中插入數據,但 insert into 操作是以追加的方式向 hive 表尾部追加數據,而 insert overwrite 操作則是直接重寫數據,即先刪除 hive 表的數據,再執行寫入操作。注意,如果 hive 表是分區表的話,insert overwrite 操作只會重寫當前分區的數據,不會重寫其他分區數據。

 

【參考資料】

[1]. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

[2]. https://my.oschina.net/sshuj/blog/852596

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM