中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當前位置: 首頁 / 技術干貨 / 正文
Hive的分區(qū)表

2023-02-09

   數據 查詢 分區(qū)

  Hive表在創(chuàng)建的時候,其實就是在HDFS的指定目錄上創(chuàng)建的一個文件夾。如果是內部表,只能映射在數據庫目錄下,而如果是外部表,則可以使用location指定映射的位置。這個文件夾下的所有的數據文件,都是這個表中的數據。隨著系統(tǒng)運行時間的累積,文件中的數據量也會越來越大。hive在進行查詢的時候,每一次的查詢,都會從這個目錄下的所有的數據文件中進行查詢。如果數據量過大的時候,這個查詢將會非常的慢了。

  那么,有沒有什么辦法可以加速這個查詢的過程呢?其實,最簡單的加速查詢就是減少文件的掃描量即可。

  我們以一個電商的訂單數據表為例,表中存放著過去5年的所有的訂單數據。每一次查詢的時候,都需要從所有的數據文件中進行查詢,數據量非常龐大,導致查詢的時間會非常的長。但是,表中的5年的訂單的數據,我們在查詢的時候,很多的數據其實都是沒有必要去查詢的。其中沒有任何的數據價值,反而要增加查詢的文件數量。

  如果我們對這些訂單的數據分個類呢?例如,按照時間?

  我們可以在表目錄下創(chuàng)建若干個文件夾,例如: 2022年、2021年、2020年...,然后將不同年份的訂單數據,存放到對應的文件夾里面即可。這樣我們在進行數據查詢的時候,如果要查詢2022年的數據,是不是只需要到2022年的文件夾中查詢即可,不用再查詢所有的數據了,就達到了加速查詢的效果了!

  這,就是分區(qū)!

  我們使用分區(qū),就是將表中的數據,按照不同的維度進行歸類。在進行數據查詢的時候,就可以按照不同的分區(qū)的號,到指定的文件夾中進行查詢即可。在上述的例子中,表目錄下只創(chuàng)建了一層的文件夾,這就是一級分區(qū)。而有時候我們還需要在一個文件夾中創(chuàng)建二級文件夾,來將數據進行更加細致的歸類,例如對于某一年的數據,可以按照月份再進行歸類。這就是二級分區(qū)。在創(chuàng)建分區(qū)的時候,還可以創(chuàng)建三級、四級等分區(qū),但是實際使用中,三級分區(qū)已經是比較多的分區(qū)層級了。常用的就是一級和二級分區(qū)。

  分區(qū)表在創(chuàng)建的時候,需要使用partitioned by 來指定分區(qū)的字段。例如:

  12345

  create table tableName(

  .......

  .......

  )

  partitioned by (colName colType [comment '...'],...)

  需要注意的是,分區(qū)字段是一個偽字段,并不會真實的存儲數據,只是一個分區(qū)的標識而已。例如我們在建表的時候如下:

  -- 一級分區(qū)

  create table part1(

  id int,

  name string,

  age int

  )

  partitioned by (dt string)

  row format delimited

  fields terminated by ',';

  -- 二級分區(qū)

  create table part2(

  id int,

  name string,

  age int

  )

  partitioned by (year int, month int)

  row format delimited

  fields terminated by ',';

  在上述的兩個分區(qū)表中,dt字段、year字段、month字段等,都是分區(qū)字段。如果我們到數據文件中進行數據的查看的話,你會發(fā)現數據文件中其實并沒有這個字段對應的信息。但是我們的確是可以通過desc查看表結構,能夠看到這個字段。因此這個字段存在的意義,只是用來區(qū)分分區(qū)的,而并不是真實的用來映射數據的。因此我們稱這樣的字段為偽字段。

好程序員公眾號

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項目源碼

好程序員開班動態(tài)

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發(fā) <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號