Hive 動態分割槽
阿新 • • 發佈:2020-08-04
Hive 動態分割槽
Hive 引數
hive 引數、變數
hive當中的引數、變數,都是以名稱空間開頭
名稱空間 | 讀寫許可權 | 含義 |
---|---|---|
hiveconf | 可讀寫 | hive-site.xml當中的各配置變數 例:hive --hiveconf hive.cli.print.header=true |
system | 可讀寫 | 系統變數,包含JVM執行引數等 例:system:user.name=root |
env | 只讀 | 環境變數 例:env:JAVA_HOME |
hivevar | 可讀寫 | 例:hive -d val=key |
通過${}方式進行引用,其中system、env下的變數必須以字首開頭
hive 引數設定方式
1、修改配置檔案 ${HIVE_HOME}/conf/hive-site.xml
2、啟動hive cli時,通過--hiveconf key=value的方式進行設定
例:hive --hiveconf hive.cli.print.header=true
3、進入cli之後,通過使用set命令設定
hive set命令
- 在hive CLI控制檯可以通過set對hive中的引數進行查詢、設定
- set設定:
set hive.cli.print.header=true; - set檢視
set hive.cli.print.header - hive引數初始化配置
當前使用者家目錄下的.hiverc檔案
如: ~/.hiverc
如果沒有,可直接建立該檔案,將需要設定的引數寫到該檔案中,hive啟動執行時,會載入改檔案中的配置。 - hive歷史操作命令集
~/.hivehistory
1、設定動態分割槽
hive 動態分割槽
開啟支援動態分割槽
-
set hive.exec.dynamic.partition=true;
預設:true
-
set hive.exec.dynamic.partition.mode=nostrict;
預設:strict(至少有一個分割槽列是靜態分割槽)
-
相關引數
-
set hive.exec.max.dynamic.partitions.pernode;
每一個執行mr節點上,允許建立的動態分割槽的最大數量(100)
-
set hive.exec.max.dynamic.partitions;
所有執行mr節點上,允許建立的所有動態分割槽的最大數量(1000)
-
set hive.exec.max.created.files;
所有的mr job允許建立的檔案的最大數量(100000)
-
hive > set hive.exec.dynamici.partition=true; #開啟動態分割槽,預設是false
hive > set hive.exec.dynamic.partition.mode=nonstrict; #開啟允許所有分割槽都是動態的,否則必須要有靜態分割槽才能使用。
案列分析:
材料:
1,小明1,12,man,1o1-book-movie,beijing:shangxuetang-shanghai:pudong
2,小明2,13,boy,1ol-book-movie,beijing:shangxuetang-shanghai:pudong
3,小明3,13,man,1ol-book-movie,beijing:shangxuetang-shanghai:pudong
4,小明4,12,boy,lol-book-movie,beijing:shangxuetang-shanghai:pudong
5,小明5,13,man,1ol-movie,beijing :shangxuetang-shanghai:pudong
6,小明6,13,boy,lol-book-movie,beijing:shangxuetang-shanghai:pudong
7,小明7,13,man,lol-book,beijing:shangxuetang-shanghai:pudong
8,小明8,12,boy,lol-book,beijing:shangxuetang-shanghai:pudong
9,小明9,12,man,1ol-book-movie,beijing:shangxuetang-shanghai:pudong
建造表:[這個表示源資料]
create table psn(
id int,
name string,
age int,
gender string,
likes array<string>,
address map<string,string>
)
row format delimited
fields terminated by ','
collection items treminated by '-'
map keys terminated by ':';
##匯入資料
load data local inpath '/root/data/test1' into table psn;
建立個動態分割槽的表
create table psn_1(
id int,
name string,
likes array<string>,
address map<string,string>
)
partitioned by (age int,gender string)
row format delimited
fields terminated by ','
collection items treminated by '-'
map keys terminated by ':';
插入資料:把源資料表psn的資料插入到psn_1的表中。
from psn
insert into psn_1 partition(age,gender)
select id,name,likes,address,age,gender,
使用hdfs查詢的檔案的時候就會發現:
動態分割槽的相關引數
set hive.exec.max.dynamic.partitions.pemode;
》每一個執行mr節點上,允許建立的動態分割槽的最大數量(100)
set hive.exec.max.dynamic.partitions;
》所有執行mr節點上,允許建立的所有動態分割槽的最大數量(1000)
set hive.exec.max created.files;
》所有的mr job允許建立的檔案的最大數量(100000)