Hive 動態分區


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)


免責聲明!

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



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