1. 程式人生 > >(6)hadoop學習——hive的檔案儲存和基本資料型別

(6)hadoop學習——hive的檔案儲存和基本資料型別

上一篇介紹了hive的架構,以及hive語句執行的過程。

這篇介紹hive的檔案儲存和基本資料型別。

Hive是hdfs上的資料倉庫,而hdfs上存放的都是檔案,所以hive中的表可以理解為對hdfs上檔案的對映。

看完下面的介紹,相信你能很清楚的理解:“hive中的表就是hdfs的檔案”這句話。

一,hive的檔案儲存

預設hive倉庫的路徑為/user/hive/warehouse/database.db/

使用hadoop dfs –ls /user/hive/warehouse/database.db/ 命令,可以檢視該資料倉庫下所有的表:


第一列為許可權,第二列是使用者,第三列使用者組,第四列大小(此處不顯示,需要再進一層目錄),第五列為建立時間,第六列為hdfs上具體目錄。

hive庫中每個表都會在/user/hive/warehouse/database.db/下有相應目錄。

找個表進去看:


可以看到,這時第四列有大小了。第一行是標識位,另外幾行是hive自動把表分成了幾份檔案。如果將其中一個part刪掉,相應的該表資料量會減少。

如果把其中一個part再load一份,相應的表資料又會增加。(可以先把檔案get到本地,再put進去,或者建一個備份表,把備份表的檔案移動過去或者使用load命令)

注:如果相同檔案,hive會自動給檔案命名為copy。

所以如果你不小心把hdfs上相應的表文件全部刪掉了,就相當於在hive中執行了truncate table操作。

2、Hive建表語句:

CREATE TABLE IF NOT EXISTS table_name
(
 company_name   String comment '公司名稱',
 company_id     String comment '公司ID'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'
LINES TERMINATED BY '\n';
stored as textfile;

最後幾句分別代表,指定列分隔符為製表符,行分隔符為\n,並且該表文件在hdfs中儲存格式為text格式。

3、load命令

可以直接將linux本地檔案load到hive表中,只要保證檔案型別、列分隔符和行分隔符與建表時指定的一致。

具體語句:

load data local inpath '檔名' into table tablename;

假設檔案不在本地,則不需要local關鍵字。

4、hive的基本資料型別

資料型別

所佔位元組

開始支援版本

TINYINT

1byte

SMALLINT

2byte

INT

4byte

BIGINT

8byte

BOOLEAN

FLOAT

4byte單精度

DOUBLE

8byte雙精度

STRING

BINARY

從Hive0.8.0開始支援

TIMESTAMP

從Hive0.8.0開始支援

DECIMAL

從Hive0.11.0開始支援

CHAR

從Hive0.13.0開始支援

VARCHAR

從Hive0.12.0開始支援

DATE

從Hive0.12.0開始支援



下一篇具體介紹複雜型別的使用。