国产精品色哟哟_男男激情3p互攻_色偷偷影院_和女同学厕所做了四次

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

2023-02-09

   數據 查詢 分區

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

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

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

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

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

  這,就是分區!

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

  分區表在創建的時候,需要使用partitioned by 來指定分區的字段。例如:

  12345

  create table tableName(

  .......

  .......

  )

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

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

  -- 一級分區

  create table part1(

  id int,

  name string,

  age int

  )

  partitioned by (dt string)

  row format delimited

  fields terminated by ',';

  -- 二級分區

  create table part2(

  id int,

  name string,

  age int

  )

  partitioned by (year int, month int)

  row format delimited

  fields terminated by ',';

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

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

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

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

    開班盛況

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

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

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

    開班盛況

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

    開班盛況
  • JavaEE分布式開發 <高端班>

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

    開班盛況

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

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

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

    預約報名

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

    開班盛況
  • 云計算開發 <高端班>

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

    預約報名

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

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

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