Hive之動態分割槽

2021-10-02 16:34:18 字數 2795 閱讀 9613

關係型資料庫中,對分割槽表 insert 資料時候,資料庫自動會根據分割槽欄位的值,將資料插入到相應的分割槽中,hive 中也提供了類似的機制,即動態分割槽(dynamic partition),只不過,使用 hive 的動態分割槽,需要進行相應的配置。 

1、開啟動態分割槽引數設定

(1)開啟動態分割槽功能(預設 true,開啟)

hive.exec.dynamic.partition=true 

(2)設定為非嚴格模式

動態分割槽的模式,預設 strict,表示必須指定至少乙個分割槽為 靜態分割槽,nonstrict 模式表示允許所有的分割槽欄位都可以使用動態分割槽。

hive.exec.dynamic.partition.mode=nonstrict 

(3)在所有執行 mr 的節點上,最大一共可以建立多少個動態分割槽。

hive.exec.max.dynamic.partitions=1000 

(4)在每個執行 mr 的節點上,最大可以建立多少個動態分割槽

該引數需要根據實際 的資料來設定。比如:源資料中包含了一年的資料,即 day 欄位有 365 個值,那麼該引數就 需要設定成大於 365,如果使用預設值 100,則會報錯。

hive.exec.max.dynamic.partitions.pernode=100 

(5)整個 mr job 中,最大可以建立多少個 hdfs 檔案。

hive.exec.max.created.files=100000

(6)當有空分割槽生成時,是否丟擲異常。一般不需要設定。

hive.error.on.empty.partition=false 

2、案例

(1)建立分割槽表

create table ori_partitioned(

id bigint,

time bigint,

uid string,

keyword string,

url_rank int,

click_num int,

click_url string

)partitioned by (pkeyword string)

row format delimited fields terminated by '\t';

(2)設定動態分割槽

set hive.exec.dynamic.partition = true;

set hive.exec.dynamic.partition.mode = nonstrict;

set hive.exec.max.dynamic.partitions = 1000;

set hive.exec.max.dynamic.partitions.pernode = 100;

set hive.exec.max.created.files = 100000;

set hive.error.on.empty.partition = false; 

匯入資料:

insert overwrite table ori_partitioned partition (pkeyword) 

select id, time, uid, keyword, url_rank, click_num, click_url,

keyword as pkeyword

from ori;

注意:insert overwrite table ori_partitioned partition (pkeyword)  中的pkeyword必須叫pkeyword,否則報錯。

(3)檢視目標分割槽表的分割槽情況

Hive 分割槽之靜態與動態分割槽

hive 分割槽之動態靜態分割槽 hive 分割槽 盡量不要用動態分割槽,因為動態分割槽的時候,將會為每乙個分割槽分配reducer數量,當分割槽數量多的時候,reducer數量將會增加,對伺服器是一種災難。動態分割槽和靜態分割槽的區別,靜態分割槽不管有沒有資料都將會建立該分割槽,動態分割槽是有結果...

HIVE動態分割槽

一 前段時間因為導表需求 從一張表中查詢出資料,按日期分割槽overwrite 到指定分割槽表中 在hive裡面研究了一下自動分割槽。步驟 1 建好所需分割槽表 2 設定分割槽引數?1 2 3 4 sethive.exec.dynamic.partition true 可通過這個語句檢視 sethi...

Hive動態分割槽

動態分割槽指不需要為不同的分割槽新增不同的插入語句,分割槽不確定,需要從資料中獲取。相關引數設定 set hive.exec dynamic partition true 使用動態分割槽 可通過這個語句檢視 set hive.exec dynamic partition set hive.exec ...