欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:hadoop hive中的分區(qū)

柚子快報(bào)激活碼778899分享:hadoop hive中的分區(qū)

http://yzkb.51969.com/

文章目錄

Hive分區(qū)1.簡(jiǎn)介為什么要分區(qū)如何分區(qū)以及細(xì)節(jié)

2.Hive分區(qū)的建立創(chuàng)建分區(qū)靜態(tài)分區(qū)動(dòng)態(tài)分區(qū)啟動(dòng)動(dòng)態(tài)分區(qū)功能多分區(qū)單分區(qū)區(qū)別創(chuàng)建多分區(qū)插入分區(qū)查看分區(qū)數(shù)查看表結(jié)構(gòu)

Hive分區(qū)

1.簡(jiǎn)介

Hive分區(qū)的概念與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)分區(qū)不一樣。

傳統(tǒng)數(shù)據(jù)庫(kù)的分區(qū)方式:就oracle而言,分區(qū)獨(dú)立存在于段里,里面存儲(chǔ)真實(shí)的數(shù)據(jù),在數(shù)據(jù)進(jìn)行插入的時(shí)候自動(dòng)分配分區(qū)。

Hive的分區(qū)方式:因?yàn)镠ive實(shí)際是存儲(chǔ)在HDFS上的抽象,Hive的一個(gè)分區(qū)名對(duì)應(yīng)一個(gè)目錄名,子分區(qū)名就是子目錄名,并非一個(gè)實(shí)際字段。

因此能夠這樣理解,當(dāng)在插入數(shù)據(jù)的時(shí)候指定分區(qū),其實(shí)就是新建一個(gè)目錄或者子目錄,或者在原有的目錄上添加數(shù)據(jù)文件。

為什么要分區(qū)

1、在Hive Select查詢中一般會(huì)掃描整個(gè)表內(nèi)容,會(huì)消耗很多時(shí)間做沒(méi)必要的工作。有時(shí)候只需要掃描表中關(guān)心的一部分?jǐn)?shù)據(jù),因此建表時(shí)引入了partition概念。

2、分區(qū)表指的是在創(chuàng)建表時(shí)指定的partition的分區(qū)空間。

3、如果需要?jiǎng)?chuàng)建有分區(qū)的表,需要在create表的時(shí)候調(diào)用可選參數(shù)partitioned by。

如何分區(qū)以及細(xì)節(jié)

根據(jù)業(yè)務(wù)分區(qū),(完全看業(yè)務(wù)場(chǎng)景)選取id、年、月、日、男女性別、年齡段 或者是能平均將數(shù)據(jù)分到不同文件中最好,分區(qū)不好將直接導(dǎo)致查詢結(jié)果延遲。

分區(qū)細(xì)節(jié):

一個(gè)表可以擁有一個(gè)或者多個(gè)分區(qū),每個(gè)分區(qū)以文件夾的形式單獨(dú)存在表文件夾的目錄下; 表和列名不區(qū)分大小寫; 分區(qū)是以字段的形式在表結(jié)構(gòu)中存在,但是該字段不存放實(shí)際的數(shù)據(jù)內(nèi)容,僅僅是分區(qū)的表示; 分區(qū)有一級(jí)、二級(jí)設(shè)置一般設(shè)置為一級(jí)分區(qū); 分區(qū)分為動(dòng)態(tài)分區(qū)和靜態(tài)分區(qū)。

2.Hive分區(qū)的建立

Hive分區(qū)是在建立表的時(shí)候用Partitioned by 關(guān)鍵字定義的,但要注意,Partitioned by子句中定義的列是表中正式的列,可是Hive下的數(shù)據(jù)文件中并不包含這些列,由于它們是目錄名。

創(chuàng)建分區(qū)

CREATE TABLE `udata_partition`(

`user_id` string,

`item_id` string,

`rating` int)

PARTITIONED BY (`dt` string)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

LINES TERMINATED BY '\n'

靜態(tài)分區(qū)

每個(gè)分區(qū)要寫一個(gè)load data,缺點(diǎn):load data 效率低下,非常繁瑣,不常用靜態(tài)分區(qū)在業(yè)務(wù)中

建立一張靜態(tài)分區(qū)表par_tab,單個(gè)分區(qū)

create table par_tab (name string,nation string) partitioned by (sex string) row format delimited fields terminated by ',';

把數(shù)據(jù)插入到表(其實(shí)load操做至關(guān)于把文件移動(dòng)到HDFS的Hive目錄下)

load data local inpath '/home/hadoop/files/par_tab.txt' into table par_tab partition (sex='man');

能夠看到,在新建分區(qū)表的時(shí)候,系統(tǒng)會(huì)在hive數(shù)據(jù)倉(cāng)庫(kù)下建立一個(gè)目錄,再建立目錄的子目錄sex=man(分區(qū)名),最后在分區(qū)名下存放實(shí)際的數(shù)據(jù)文件。

新建表的時(shí)候設(shè)置多分區(qū),定義的分區(qū)順序,決定了文件目錄順序(誰(shuí)是父目錄誰(shuí)是子目錄)

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

若是用上述的靜態(tài)分區(qū),插入的時(shí)候必須首先要知道有什么分區(qū)類型,并且每一個(gè)分區(qū)寫一個(gè)load data,比較麻煩。使用動(dòng)態(tài)分區(qū)可解決以上問(wèn)題,其能夠根據(jù)查詢獲得的數(shù)據(jù)動(dòng)態(tài)分配到分區(qū)里。其實(shí)動(dòng)態(tài)分區(qū)與靜態(tài)分區(qū)區(qū)別就是不指定分區(qū)目錄,由系統(tǒng)本身選擇。

不確定分區(qū)數(shù)量,數(shù)據(jù)量也不是很大,使用動(dòng)態(tài)分區(qū)

啟動(dòng)動(dòng)態(tài)分區(qū)功能

hive> set hive.exec.dynamic.partition=true;

多分區(qū)單分區(qū)區(qū)別

創(chuàng)建多分區(qū)

hive> create table tablename (name string, nation string) partitioned by (p1 string,dt string) row format delimited fields terminated by ',' ;

插入分區(qū)

第一個(gè)分區(qū)為主分區(qū),多分區(qū)默認(rèn)模式為 主靜副動(dòng),動(dòng)態(tài)分區(qū)不容許主分區(qū)采用動(dòng)態(tài)列而副分區(qū)采用靜態(tài)列,這樣將致使全部的主分區(qū)都要建立副分區(qū)靜態(tài)列所定義的分區(qū)。

hive> insert overwrite table par_dnm partition(分區(qū)字段1='設(shè)置值',dt)

> select name, nation, dt from par_tab;

select 的的name,nation 對(duì)應(yīng) 要插入表的第1,2個(gè)字段,分區(qū)字段1 為靜態(tài)分區(qū)直接設(shè)置的默認(rèn)值的,查詢的dt 對(duì)應(yīng)分區(qū)字段dt完成動(dòng)態(tài)分區(qū)(根據(jù)查詢出來(lái)的dt自行分區(qū))。

動(dòng)態(tài)分區(qū)能夠容許全部的分區(qū)列都是動(dòng)態(tài)分區(qū)列,可是要首先設(shè)置一個(gè)參數(shù)

查看分區(qū)設(shè)置模式

hive> set hive.exec.dynamic.partition.mode;

hive.exec.dynamic.partition.mode=strict

它的默認(rèn)值是strict,即不容許分區(qū)列所有是動(dòng)態(tài)的,這是為了防止用戶有可能原意是只在子分區(qū)內(nèi)進(jìn)行動(dòng)態(tài)建分區(qū),可是因?yàn)槭韬鐾洖橹鞣謪^(qū)列指定值了,這將致使一個(gè)dml語(yǔ)句在短期內(nèi)建立大量的新的分區(qū)(對(duì)應(yīng)大量新的文件夾),對(duì)系統(tǒng)性能帶來(lái)影響。 因此要設(shè)置

hive> set hive.exec.dynamic.partition.mode=nostrict;

查看分區(qū)數(shù)

hive> show partitions tablename;

查看表結(jié)構(gòu)

show create table tablename ;

設(shè)置分區(qū)數(shù)量

set hive.exec.max.dynamic.partitions.pernode=1000;

柚子快報(bào)激活碼778899分享:hadoop hive中的分區(qū)

http://yzkb.51969.com/

參考閱讀

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19520516.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄