Hive的數據存儲(內部表,外部表,分區表,桶表,視圖)

一,Hive的數據存儲

1,基於HDFS

2,沒有專門的數據存儲格式

3,存儲結構主要包括:數據庫,文件,表,視圖

4,可以直接加載文本文件(.txt文件等)

5,創建表示,指定Hive數據的列分隔符與行分隔符

二,Hive的數據模型

1,表

1,Table 內部表
    1).與數據庫中的Table在概念上是類似的
    2).每一個Table在Hive中都有一個相應的目錄存儲數據
    3).所有的Table數據(不包括 External Table) 都保存在這個目錄中
    4).刪除表時,元數據與數據都會被刪除
    5).建表:

這裏寫圖片描述

2,Partition 分區表
    1).Partition 對應於數據庫的Partition列的密集索引
    2).在Hive中,表中的一個Partition對應於表下的一個目錄,所有的Partition的數據都存儲在對應的目錄中。
    3).建表:
hive> create table partition_table
    > (sid int, sname string)
    > partitioned by (gender string)
    > row format delimited fields terminated by ',';
3,External Table 外部表
    1).指向已經在HDFS中存在的數據,可以創建Partition
    2).它和內部表在元數據的組織上是相同的,而實際數據的存儲則有較大的差異
    3).外部表只有一個過程,加載數據和創建表同時完成,並不會移動到數據庫目錄中,知識與外部數據建立一個連接。當刪除一個外部表時,僅刪除連接。
    4).建表:
hive> create external table external_student
    > (sid int,sname string,age int)
    > row format delimited fields terminated by ','
    > location '/input';
4,Bucket Table 桶表
    1). 桶表是對數據進行哈希取值,值不同的放到不同的文件中存儲。
    2). 建表:
hive> create table bucket_table 
    > (sid int,sname string,age int)
    > clustered by(sname) into 5 buckets;

2,視圖(邏輯的概念)

1.視圖是一種虛表,是一個邏輯概念;可以跨越多張表
2.視圖建立在已有表的基礎上,視圖賴以建立的這些表稱爲基表
3.視圖可以簡化複雜的查詢
4.建立視圖:
hive> create view empinfo
    > as 
    > select e.empno,e.ename,e.sal,e.sal*12 annlsal,d.dname
    > from emp e,dept d
    > where e.deptno=d.deptno;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章