Impala儲存與分區


 

 

  不多說,直接上干貨!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   hive的元數據存儲在/user/hadoop/warehouse

   Impala的內部表也在/user/hadoop/warehouse。

  那兩者怎么區分,看前面的第一列。

 

 

 

 

 

 

 

下面是Impala對文件的格式及壓縮類型的支持

  

  

 

 

 • 添加分區方式
    – 1、partitioned by 創建表時,添加該字段指定分區列表
    – 2、使用alter table 進行分區的添加和刪除操作

create table t_person(id int, name string, age int) partitioned by (type string);
alter table t_person add partition (sex=‘man');
alter table t_person drop partition (sex=‘man');
alter table t_person drop partition (sex=‘man‘,type=‘boss’);

 

  • 分區內添加數據

insert into t_person partition (type='boss') values (1,’zhangsan’,18),(2,’lisi’,23)
insert into t_person partition (type='coder') values(3,wangwu’,22),(4,’zhaoliu’,28),(5,’tianqi’,24)

 

 

  • 查詢指定分區數據

select id,name from t_person where type=‘coder

 

 

 

 

 

 

 

 

 

 

 

 

   進行數據分區將會極大的提高數據查詢的效率,尤其是對於當下大數據的運用,是一門不可或缺的知識。那數據怎么創建分區呢?數據怎樣加載到分區

一、  Impala/Hive按State分區Accounts

  (1)示例:accounts是非分區表

        

  

 

 

  通過以上方式創建的話,數據就存放在accounts目錄里面。那么,如果Loudacre大部分對customer表的分析是按state來完成的?比如:

  這種情況下如果數據量很大,為了避免全表掃描的發生,我們可以去創建分區。如果不創建分區的話,它會默認所有查詢不得不掃描目錄的所有文件。創建分區按state將數據存儲到不同的子目錄,當按照“NY”的條件進行查詢的時候,它只會掃描到子目錄,下面我具體來看一下分區創建。

 

 

二、分區創建

(1)使用PARTITIONED BY來創建分區表

    

  在這里注意state是被刪除掉的,因為它作為分區字段,我們知道分區數據是不會出現在實際的文件當中的,所以state作為分區字段是不會出現在列當中的。換句話說,分區鍵就是一個虛列,它是不會存在列當中的。那么,如何去查看我們分區的列呢?它會出現在我們的結構當中嗎?會的。

 

 

 

三、查看分區列

  使用DESCRIBE顯示分區列,它會出現在結構最后一列,它是一個虛列,並不是真實在數據中存在的列。

        

  我們創建單個分區,但有時候會有嵌套分區,如何來處理呢?

 

 

 

 

四、創建嵌套分區:

          

 

  創建好了分區,我們怎么加載數據到分區呢?有兩種方式動態分區和靜態分區。動態分區是指Impala/Hive在加載的時候自動添加新的分區,數據基於列值存儲到正確的分區(子目錄)。而靜態分區需要我們通過ADD PARTITION提前去定義分區的名稱,當加載數據的時候,指定存儲數據到哪個分區。那么動態分區和靜態分區各有什么特征呢?后續為大家接着分享。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM