創建數據庫和表是學習大數據必備的知識,那麼數據庫和表如何創建呢?使用Impala和Hive創建數據庫和表又有什麼區別呢?
數據庫和表通過HiveQL或ImpalaSQL的DDL語句進行創建和管理,和標準SQL DDL非常相似。但是它們又有各自不同的語法,這個差異會在後面具體提出來,如果沒有提到就是兩者相通的。
一、創建數據庫
Hive和Impala數據庫就是簡單的命名空間,用來統一管理一部分表和視圖。數據庫在HDFS上的體現就是一個建立在表上的目錄。
(1)創建新的數據庫:
這是和所有關係型數據庫相通的一個命令,執行此操作就會添加數據庫定義到元數據庫,並且在HDFS裏創建存儲目錄,比如:/user/hive/warehouse/loudacre.db
(2)可以帶條件創建新數據庫
這是一個友好的寫法,就是當你要把創建數據庫的動作放到腳本中去執行,前提必須保證腳本可以重複執行,不會出現任何失敗,所以可以加IF NOT EXISTS。當這個數據庫不存在的時候,這個語句可以正常的運行,去創建一個數據庫;如果存在的話,就進行下一步。放在腳本中執行,不需要擔心執行會失敗,最起碼在這一步執行中是不會失敗的。
(3)移除數據庫
移除數據庫和創建類似,只是替換CREATE爲DROP
但是如果數據庫中包含一些表的話,那麼上述命令的執行就會失敗。當然有些情況下,我們需要直接執行這個命令,然後同時讓它把這個數據庫下面所有的表和結構信息全部刪除,那麼我們執行如下命令:
二、創建表
(1)數據類型:
當我們去創建一個表的時候,我們需要去指定列,那麼這個列也有自己特定的數據類型,在我們創建表的時候需要去指定這個數據類型,對不符合的類型的數據將會返回NULL。常見數據類型:
在這裏重點強調Hive支持支持複雜數據類型,比如maps和arrays,而Impala根據版本不同會不一樣。
(2)基本語法:
當我們執行了這樣一個操作,它會在HDFS的數據倉庫目錄創建一個子目錄。如果你沒有指定數據庫名,它會在/user/hive/warehouse/這個默認的數據倉庫目錄下有tablename這樣一個表的目錄;但是如果你創建一個DB,那麼會在DB下面去創建子目錄。具體如下:
默認數據庫:
/user/hive/warehouse/tablename
命名的數據庫:
/user/hive/warehouse/dbname.db/tablename
(3)創建表的類型:
在hive裏面是以什麼來判斷數據呢?它是以指定行或列的分隔來去判斷我們的數據有幾條,有幾個字段,所以我們必須指定行或列的分隔
(4)數據分隔
(5)數據存儲
以上就是根據自身經驗分享的表和數據庫的創建過程,如果有疑問可以關注“大數據cn”微信公衆號來提問。