關係型資料庫中,對分割槽表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分割槽能夠作為 虛擬 的記憶體,但它的速度比物理...