Hive 分區表導入數據與動態分區


為分區導入數據(手動設置分區)

insert overwrite table 表名 partition(分區字段='分區名') 
select
……
from 表名 where 分區字段 = '分區名';

動態分區

Hive默認是 靜態分區,我們在插入數據的時候要手動設置分區,如果源數據量很大的時候,那么針對一個分區就要寫一個insert,
比如說,有很多我們日志數據,我們要按日期作為分區字段,在插入數據的時候手動去添加分區,那樣太麻煩。

因此,Hive提供了動態分區,動態分區簡化了我們插入數據時的繁瑣操作。

--設置參數動態分區

--開啟動態分區
set hive.exec.dynamic.partition=true;  
--這個屬性默認是strict,即限制模式,strict是避免全分區字段是動態的,必須至少一個分區字段是指定有值即靜態的,且必
--須放在最前面。設置為nonstrict之后所有的分區都可以是動態的了。
set hive.exec.dynamic.partition.mode=nonstrict;
------------------------------------------------------------------------

--表示每個節點生成動態分區的最大個數,默認是100
set hive.exec.max.dynamic.partitions.pernode=10000;  

--表示一個DML操作可以創建的最大動態分區數,默認是1000
set hive.exec.max.dynamic.partitions=100000;

--表示一個DML操作可以創建的最大文件數,默認是100000
set hive.exec.max.created.files=150000;

--將select數據,覆蓋到表的動態分區
insert overwrite table table1 partition (ds, hr)  
select key, value, ds, hr FROM table2 WHERE ds is not null;


免責聲明!

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



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