天天看點

《hive程式設計指南》閱讀筆記摘要(二)

第三章 資料類型和檔案格式

hive中的資料類型包括基本資料類型和集合資料類型(array、map、struct),通常,關系型資料庫中沒有集合資料類型,而是用關系表關聯表示集合。

原因在于: hive中将相關資料存儲在一起,來減少磁盤尋址操作,提高性能。

基本資料類型都是對java中接口的實作,是以類型的具體行為細節和java中對應的類型完全一緻,如string類型實作的就是java中String類型

TIMESTAMP表示UTC時間,可以是整數(距離unix新紀元時間的秒數);浮點數(距離unix新紀元時間的秒數,小數部分表示納秒);字元串(JDBC相容的java.sql.Timestamp格式,YYYY-MM-DD hh:mm:ss:fffffffff)

如果一個表的表結構中有3列,而實際的資料檔案中每行記錄有5列,那麼在hive中最後兩列會被省略掉

CSV:Comma-Separated Values,逗号分隔值

TSV:Tab-Separated Values,制表符分隔值

hive中 預設的行分隔符和字段分隔符

\n         文本檔案中每行是一條記錄

^A(\001)   用于分隔字段,\001是^A的八進制數

^B(\002)   用于分隔array或struct中的元素,或者作為map中每對key/value之間的分隔符

^C(\003)   用于分隔map中每對key/value中的key和value

在建立表結構時,如果使用預設的分隔符,就不必聲明,否則,需要顯式地聲明

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\001'

COLLECTION ITEMS TERMINATED BY '\002'

MAP KEYS TERMINATED BY '\003'

LINES TERMINATED BY '\n'

STORED AS TEXTFILE;

寫時模式:資料在寫入資料庫時對模式進行檢查,傳統資料庫都是寫時模式;

讀時模式:在查詢階段做資料驗證,hive使用此模式;

對于hive表結構和檔案不比對的情況,hive會盡量做适配:

    檔案中字段數量少于表字段數量,字段值就用null表示

    檔案中字段數量多餘表字段數量,檔案中多餘的字段自動截取

    表字段是數值型,檔案中字段值有非數值型的字元串,字段值用null表示

--------------------------

微信公衆号:IT人成長關注

大資料技術QQ群:485681776