第三章 資料類型和檔案格式
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