動態分割槽調整

2021-09-27 20:48:27 字數 2584 閱讀 6910

關係型資料庫中,對分割槽表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. 案例實操
需求:將ori中的資料按照時間(如:20111230000008),插入到目標表ori_partitioned_target的相應分割槽中。

(1)建立分割槽表
create table ori_partitioned

(id bigint, time bigint, uid string, keyword string,

url_rank int

, click_num int

, click_url string)

partitioned by (p_time bigint)

row format delimited fields terminated by '\t'

;

(2)載入資料到分割槽表中
hive (

default

)> load data local inpath '/opt/moudles/cdh/input/ds1' into table ori_partitioned partition

(p_time=

'20111230000010');

hive (

default

)> load data local inpath '/opt/moudles/cdh/input/ds2' into table ori_partitioned partition

(p_time=

'20111230000011'

);

(3)建立目標分割槽表
create table ori_partitioned_target

(id bigint, time bigint, uid string,

keyword string, url_rank int

, click_num int

, click_url string) partitioned by (p_time string) row format delimited fields terminated by '\t'

;

(4)設定動態分割槽
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

;hive (

default

)> insert overwrite table ori_partitioned_target partition (p_time)

select id, time, uid, keyword, url_rank, click_num, click_url, p_time from ori_partitioned;

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

default

)> show partitions ori_partitioned_target;

Hive 調優 動態分割槽調整

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

CentOS Linux 調整分割槽大小

linux df命令用於顯示目前在linux系統上的檔案系統的磁碟使用情況統計。h,human readable 使用人類可讀的格式 預設值是不加這個選項的 resize2fs命令是用來增大或者收縮未載入的 ext2 ext3 ext4 檔案系統的大小。語法格式 resize2fs 引數 檔案 常用...

linux交換分割槽調整

swap就是linux下的虛擬記憶體分割槽,它的作用是在物理記憶體使用完之後,將磁碟空間 也就是swap分割槽 虛擬成記憶體來使用。它和windows系統的交換檔案作用類似,但是它是一段連續的磁碟空間,並且對使用者不可見。需要注意的是,雖然這個swap分割槽能夠作為 虛擬 的記憶體,但它的速度比物理...