經典解密數據庫和表的創建


    創建數據庫和表是學習大數據必備的知識,那麼數據庫和表如何創建呢?使用Impala和Hive創建數據庫和表又有什麼區別呢?

數據庫和表通過HiveQL或ImpalaSQL的DDL語句進行創建和管理,和標準SQL DDL非常相似。但是它們又有各自不同的語法,這個差異會在後面具體提出來,如果沒有提到就是兩者相通的。

一、創建數據庫

Hive和Impala數據庫就是簡單的命名空間,用來統一管理一部分表和視圖。數據庫在HDFS上的體現就是一個建立在表上的目錄。

(1)創建新的數據庫:

wKiom1hrT0niH41fAAAolhxGPII677.png-wh_50

這是和所有關係型數據庫相通的一個命令,執行此操作就會添加數據庫定義到元數據庫,並且在HDFS裏創建存儲目錄,比如:/user/hive/warehouse/loudacre.db

(2)可以帶條件創建新數據庫

wKioL1hrT1TwSlsqAAAIC3atPFM513.png-wh_50

這是一個友好的寫法,就是當你要把創建數據庫的動作放到腳本中去執行,前提必須保證腳本可以重複執行,不會出現任何失敗,所以可以加IF NOT EXISTS。當這個數據庫不存在的時候,這個語句可以正常的運行,去創建一個數據庫;如果存在的話,就進行下一步。放在腳本中執行,不需要擔心執行會失敗,最起碼在這一步執行中是不會失敗的。

(3)移除數據庫

移除數據庫和創建類似,只是替換CREATE爲DROP

wKioL1hrT2LDBkeqAAANZTFzgi0430.png-wh_50

但是如果數據庫中包含一些表的話,那麼上述命令的執行就會失敗。當然有些情況下,我們需要直接執行這個命令,然後同時讓它把這個數據庫下面所有的表和結構信息全部刪除,那麼我們執行如下命令:

wKioL1hrT22zDpP5AABH2Drgmf4369.png-wh_50

二、創建表

(1)數據類型:

當我們去創建一個表的時候,我們需要去指定列,那麼這個列也有自己特定的數據類型,在我們創建表的時候需要去指定這個數據類型,對不符合的類型的數據將會返回NULL。常見數據類型:

wKiom1hrT37Szje-AABB8xBhzL8363.png-wh_50

在這裏重點強調Hive支持支持複雜數據類型,比如maps和arrays,而Impala根據版本不同會不一樣。

(2)基本語法:

wKiom1hrT43C6rCVAAAUPs_brlo456.png-wh_50

當我們執行了這樣一個操作,它會在HDFS的數據倉庫目錄創建一個子目錄。如果你沒有指定數據庫名,它會在/user/hive/warehouse/這個默認的數據倉庫目錄下有tablename這樣一個表的目錄;但是如果你創建一個DB,那麼會在DB下面去創建子目錄。具體如下:

默認數據庫:
 /user/hive/warehouse/tablename

命名的數據庫:
 /user/hive/warehouse/dbname.db/tablename

(3)創建表的類型:

wKioL1hrT57BPu0wAACuXdTE3-w755.png-wh_50

在hive裏面是以什麼來判斷數據呢?它是以指定行或列的分隔來去判斷我們的數據有幾條,有幾個字段,所以我們必須指定行或列的分隔

wKioL1hrT6zzOF_QAAEFM-ILm-M988.png-wh_50

(4)數據分隔

wKioL1hrT8OxLIvqAADeS3saDmQ699.png-wh_50

(5)數據存儲

wKiom1hrT9GxL4TdAAEh76Djesw043.png-wh_50

以上就是根據自身經驗分享的表和數據庫的創建過程,如果有疑問可以關注“大數據cn”微信公衆號來提問。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章