hive的partition的作用和使用方法

一菇民、背景

  1. 在Hive Select查詢中一般會掃描整個表內(nèi)容仓洼,會消耗很多時間做沒必要的工作。有時候只需要掃描表中關(guān)心的一部分數(shù)據(jù)扇单,因此建表時引入了partition概念商模。
  2. 分區(qū)表指的是在創(chuàng)建表時指定的partition的分區(qū)空間奠旺。
  3. 如果需要創(chuàng)建有分區(qū)的表蜘澜,需要在create表的時候調(diào)用可選參數(shù)partitioned by,詳見表創(chuàng)建的語法結(jié)構(gòu)响疚。

二鄙信、技術(shù)細節(jié)

  1. 一個表可以擁有一個或者多個分區(qū),每個分區(qū)以文件夾的形式單獨存在表文件夾的目錄下忿晕。
  2. 表和列名不區(qū)分大小寫装诡。
  3. 分區(qū)是以字段的形式在表結(jié)構(gòu)中存在,通過describe table命令可以查看到字段存在践盼,但是該字段不存放實際的數(shù)據(jù)內(nèi)容鸦采,僅僅是分區(qū)的表示。
  4. 建表的語法(建分區(qū)可參見PARTITIONED BY參數(shù)):
CREATE [EXTERNAL] 
TABLE 
[IF NOT EXISTS] table_name 
[(col_name data_type [COMMENT col_comment], ...)] 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) 
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
[ROW FORMAT row_format]
 [STORED AS file_format] 
[LOCATION hdfs_path]
  1. 分區(qū)建表分為2種咕幻,一種是單分區(qū)渔伯,也就是說在表文件夾目錄下只有一級文件夾目錄。另外一種是多分區(qū)肄程,表文件夾下出現(xiàn)多文件夾嵌套模式锣吼。
    a. 單分區(qū)建表語句:create table day_table (id int, content string) partitioned by (dt string);單分區(qū)表,按天分區(qū)蓝厌,在表結(jié)構(gòu)中存在id玄叠,content,dt三列拓提。
    b. 雙分區(qū)建表語句:create table day_hour_table (id int, content string) partitioned by (dt string, hour string);雙分區(qū)表读恃,按天和小時分區(qū),在表結(jié)構(gòu)中新增加了dt和hour兩列代态。
    表文件夾目錄示意圖(多分區(qū)表):
  2. 添加分區(qū)表語法(表已創(chuàng)建狐粱,在此基礎(chǔ)上添加分區(qū)):
    ALTER TABLE table_name ADD partition_spec [ LOCATION 'location1' ] partition_spec [ LOCATION 'location2' ] ... partition_spec: : PARTITION (partition_col = partition_col_value, partition_col = partiton_col_value, ...)
    用戶可以用 ALTER TABLE ADD PARTITION 來向一個表中增加分區(qū)。當分區(qū)名是字符串時加引號胆数。例:
    ALTER TABLE day_table ADD PARTITION (dt='2008-08-08', hour='08') location '/path/pv1.txt' PARTITION (dt='2008-08-08', hour='09') location '/path/pv2.txt';
    7肌蜻、. 刪除分區(qū)語法:
    ALTER TABLE table_name DROP partition_spec, partition_spec,...
    用戶可以用 ALTER TABLE DROP PARTITION 來刪除分區(qū)。分區(qū)的元數(shù)據(jù)和數(shù)據(jù)將被一并刪除必尼。例:
    ALTER TABLE day_hour_table DROP PARTITION (dt='2008-08-08', hour='09');
  3. 數(shù)據(jù)加載進分區(qū)表中語法:
    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
    例:
    LOAD DATA INPATH '/user/pv.txt' INTO TABLE day_hour_table PARTITION(dt='2008-08- 08', hour='08'); LOAD DATA local INPATH '/user/hua/*' INTO TABLE day_hour partition(dt='2010-07- 07');
    當數(shù)據(jù)被加載至表中時蒋搜,不會對數(shù)據(jù)進行任何轉(zhuǎn)換。Load操作只是將數(shù)據(jù)復制至Hive表對應的位置判莉。數(shù)據(jù)加載時在表下自動創(chuàng)建一個目錄豆挽,文件存放在該分區(qū)下。
  4. 基于分區(qū)的查詢的語句:
    SELECT day_table.* FROM day_table WHERE day_table.dt>= '2008-08-08';
  5. 查看分區(qū)語句:
    hive> show partitions day_hour_table; OK dt=2008-08-08/hour=08 dt=2008-08-08/hour=09 dt=2008-08-09/hour=09

三券盅、總結(jié)

  1. 在 Hive 中帮哈,表中的一個 Partition 對應于表下的一個目錄,所有的 Partition 的數(shù)據(jù)都存儲在最字集的目錄中锰镀。
  2. 總的說來partition就是輔助查詢娘侍,縮小查詢范圍咖刃,加快數(shù)據(jù)的檢索速度和對數(shù)據(jù)按照一定的規(guī)格和條件進行管理。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憾筏,一起剝皮案震驚了整個濱河市嚎杨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氧腰,老刑警劉巖枫浙,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異古拴,居然都是意外死亡箩帚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門黄痪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膏潮,“玉大人,你說我怎么就攤上這事满力』啦危” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵油额,是天一觀的道長叠纷。 經(jīng)常有香客問我,道長潦嘶,這世上最難降的妖魔是什么涩嚣? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮掂僵,結(jié)果婚禮上航厚,老公的妹妹穿的比我還像新娘。我一直安慰自己锰蓬,他們只是感情好幔睬,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芹扭,像睡著了一般麻顶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舱卡,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天辅肾,我揣著相機與錄音,去河邊找鬼轮锥。 笑死矫钓,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播新娜,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼赵辕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杯活?” 一聲冷哼從身側(cè)響起匆帚,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤熬词,失蹤者是張志新(化名)和其女友劉穎旁钧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互拾,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡歪今,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了颜矿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寄猩。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖骑疆,靈堂內(nèi)的尸體忽然破棺而出田篇,到底是詐尸還是另有隱情,我是刑警寧澤箍铭,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布泊柬,位于F島的核電站,受9級特大地震影響诈火,放射性物質(zhì)發(fā)生泄漏兽赁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一冷守、第九天 我趴在偏房一處隱蔽的房頂上張望刀崖。 院中可真熱鬧,春花似錦拍摇、人聲如沸亮钦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽或悲。三九已至,卻和暖如春堪唐,著一層夾襖步出監(jiān)牢的瞬間巡语,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工淮菠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留男公,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像枢赔,于是被迫代替她去往敵國和親澄阳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一踏拜、背景 1碎赢、在Hive Select查詢中一般會掃描整個表內(nèi)容,會消耗很多時間做沒必要的工作速梗。有時候只需要掃描表...
    ghostdogss閱讀 602評論 0 1
  • 1.1Hive SQL 1.1.1Hive的數(shù)據(jù)類型 primitive_type array_type //數(shù)...
    南宮蕭言閱讀 770評論 0 0
  • Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具肮塞,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供類SQL查詢功能姻锁。本...
    felix521閱讀 1,295評論 0 0
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,446評論 0 13
  • 忙碌的周一枕赵,依然空出晚上的時間畫張小畫,沉淀一下浮躁的情緒位隶。線條有些粗糙拷窜,最近沒有任何進步,但我只要開心就好~ ???
    城市的秋天閱讀 200評論 0 0