自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hive動(dòng)態(tài)分區(qū)詳解,你知道嗎?

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
Hive根據(jù)select語(yǔ)句中最后兩列來(lái)確定分區(qū)字段country和state的值,這里刻意使用了不同的命名,就是為了強(qiáng)調(diào)源表字段和輸出分區(qū)值之間的關(guān)系是根據(jù)位置而不是根據(jù)命名來(lái)匹配的。

 [[382321]]

本文轉(zhuǎn)載自微信公眾號(hào)「Java大數(shù)據(jù)與數(shù)據(jù)倉(cāng)庫(kù)」,作者柯同學(xué)。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java大數(shù)據(jù)與數(shù)據(jù)倉(cāng)庫(kù)公眾號(hào)。

動(dòng)態(tài)分區(qū)調(diào)整

  • 動(dòng)態(tài)分區(qū)屬性:設(shè)置為true表示開(kāi)啟動(dòng)態(tài)分區(qū)功能(默認(rèn)為false)hive.exec.dynamic.partition=true;
  • 動(dòng)態(tài)分區(qū)屬性:設(shè)置為nonstrict,表示允許所有分區(qū)都是動(dòng)態(tài)的(默認(rèn)為strict)設(shè)置為strict,表示必須保證至少有一個(gè)分區(qū)是靜態(tài)的hive.exec.dynamic.partition.mode=strict;
  • 動(dòng)態(tài)分區(qū)屬性:每個(gè)mapper或reducer可以創(chuàng)建的最大動(dòng)態(tài)分區(qū)個(gè)數(shù)hive.exec.max.dynamic.partitions.pernode=100;
  • 動(dòng)態(tài)分區(qū)屬性:一個(gè)動(dòng)態(tài)分區(qū)創(chuàng)建語(yǔ)句可以創(chuàng)建的最大動(dòng)態(tài)分區(qū)個(gè)數(shù)hive.exec.max.dynamic.partitions=1000;
  • 動(dòng)態(tài)分區(qū)屬性:全局可以創(chuàng)建的最大文件個(gè)數(shù)hive.exec.max.created.files=100000;
  • 控制DataNode一次可以打開(kāi)的文件個(gè)數(shù) 這個(gè)參數(shù)必須設(shè)置在DataNode的$HADOOP_HOME/conf/hdfs-site.xml文件中
  1. <property> 
  2.     <name>dfs.datanode.max.xcievers</name
  3.     <value>8192</value> 
  4. </property> 

注意

在Hive中,動(dòng)態(tài)分區(qū)會(huì)造成在插入數(shù)據(jù)過(guò)程中,生成過(guò)多零碎的小文件

動(dòng)態(tài)分區(qū)插入

如果需要?jiǎng)?chuàng)建非常多的分區(qū),用戶(hù)就需要寫(xiě)非常多的條件查詢(xún)sql把數(shù)據(jù)插入對(duì)應(yīng)分區(qū)。好在Hive提供了動(dòng)態(tài)分區(qū)功能,可以根據(jù)分區(qū)字段的取值自動(dòng)創(chuàng)建分區(qū)。前面列出的開(kāi)啟動(dòng)態(tài)分區(qū)hive.exec.dynamic.partition,并且hive.exec.dynamic.partition.mode需要為非嚴(yán)格模式,通常如果分區(qū)很多的話,hive.exec.max.dynamic.partitions.pernode也需要設(shè)置為一個(gè)較大的數(shù),否則會(huì)有報(bào)錯(cuò)提醒。

現(xiàn)在有sql:

  1. insert overwrite table employees partitions (country, state) 
  2. select ...,se.cnty, se.st 
  3. from staged_employees se; 

可以看出,Hive根據(jù)select語(yǔ)句中最后兩列來(lái)確定分區(qū)字段country和state的值,這里刻意使用了不同的命名,就是為了強(qiáng)調(diào)源表字段和輸出分區(qū)值之間的關(guān)系是根據(jù)位置而不是根據(jù)命名來(lái)匹配的。

動(dòng)靜分區(qū)結(jié)合

也可以混合使用動(dòng)態(tài)和靜態(tài)分區(qū)。上面那個(gè)例子,我們可以指定國(guó)家這個(gè)分區(qū)值五為靜態(tài)值US,而分區(qū)字段state是動(dòng)態(tài)值:

  1. insert overwrite table employees partitions (country = 'US', state) 
  2. select ...,se.cnty, se.st 
  3. from staged_employees se 
  4. where se.cnty = 'US'

注意:靜態(tài)分區(qū)需要出現(xiàn)在動(dòng)態(tài)分區(qū)字段之前。

動(dòng)態(tài)分區(qū)功能默認(rèn)情況下是沒(méi)有開(kāi)啟的,默認(rèn)是以嚴(yán)格模式執(zhí)行,這種模式下要求至少有一列分區(qū)字段是靜態(tài)的。這樣做的好處是可以防止因設(shè)計(jì)或其它錯(cuò)誤查詢(xún)導(dǎo)致產(chǎn)生大量的分區(qū),比如sql boy不小心使用了時(shí)間戳作為分區(qū)字段,那將是災(zāi)難。在日常導(dǎo)入一天的數(shù)據(jù),通常是指定日期為靜態(tài)分區(qū),小時(shí)為動(dòng)態(tài)分區(qū),進(jìn)行混合模式導(dǎo)入。

例子

建表

  1. create table if not exists test.test 
  2. id string, 
  3. name string 
  4. partitioned by (dt string,hour string) 
  5. row format delimited fields terminated by '\t'
  6.  
  7. create table if not exists test.test2 
  8. id string, 
  9. name string 
  10. partitioned by (dt string,hour string) 
  11. row format delimited fields terminated by '\t' 
  12. stored as orc; 

導(dǎo)入數(shù)據(jù)到test.test表

  1. load data local inpath '/home/hadoop/data/test.txt' into table test.test partition(dt = '2019-09-10'hour = '02'); 
  2.  
  3. test.txt 
  4. 001    keguang 
  5. 002    kg 
  6. 003    kk 
  7. 004    ikeguang 

利用動(dòng)態(tài)分區(qū)插入

  1. insert overwrite table test.test2 partition(dt, hourselect `(dt|hour)?+.+`,dt,hour from test.test; 

這里,(dt|hour)?+.+表示查詢(xún)出test表除了dt和hour這兩個(gè)字段的其它所有字段。

 

責(zé)任編輯:武曉燕 來(lái)源: Java大數(shù)據(jù)與數(shù)據(jù)倉(cāng)庫(kù)
相關(guān)推薦

2024-07-01 08:40:18

tokio派生線程

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2024-11-14 10:44:57

2021-04-20 23:16:06

SparkSQL語(yǔ)法

2021-10-14 06:52:47

算法校驗(yàn)碼結(jié)構(gòu)

2022-11-04 14:16:05

2024-09-18 07:00:00

消息隊(duì)列中間件消息隊(duì)列

2025-02-18 08:11:17

2023-03-21 07:39:51

CentOS掛載硬盤(pán)

2022-12-02 14:12:52

新能源汽車(chē)海爾

2023-01-13 17:02:10

操作系統(tǒng)鴻蒙

2020-02-20 08:30:49

OSPF網(wǎng)絡(luò)協(xié)議路由協(xié)議

2022-11-28 00:04:17

2024-07-08 00:00:01

多線程ThreadC#

2024-01-15 12:16:37

2022-09-29 15:32:58

云計(jì)算計(jì)算模式

2023-12-12 08:41:01

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)