HIVE External&TBLPROPERTIES(二)

HIVE External&TBLPROPERTIES(二)

1.External

hive中有兩種表:外部表和內部表(managed and external)。可以通過desc formatted table_name 命令來查看錶的信息,來辨別表是外部表還是內部表。
內部表的文件,元數據和統計信息等由hive進行管理,被存儲在hive.metastore.warehouse.dir 目錄下,當表被刪除或者分區被刪除,相對應的數據和元數據就會被刪除。一般用來當做臨時表。
外部表與內部表相反,可以指定location,可以不基於hive來操作外部表文件。當表被刪除或者分區被刪除時對應的數據還會存在。只是hive刪除了其元信息,表的數據文件依然存在於文件系統中。若是表被刪除,可以重新建這個表,指定location到數據文件處,然後通過msck repair table table_name命令刷新數據的元信息到hive中,也就是恢復了數據。若是分區被刪除也可以通過這個命令來刪除,這也是分區表的優點所在。
注:統計信息可以用來做查詢優化(後邊介紹)

2.TBLPROPERTIES

實際上就是table properties,TBLPROPERTIES允許開發者定義一些自己的鍵值對信息。可以對TBLPROPERTIES進行查看和修改(部分可修改)。在TBLPROPERTIES中有一些預定義信息,比如last_modified_user和last_modified_time,其他的一些預定義信息包括:

TBLPROPERTIES ("comment"="table_comment")
TBLPROPERTIES ("hbase.table.name"="table_name")
TBLPROPERTIES ("immutable"="true") or ("immutable"="false") 
TBLPROPERTIES ("orc.compress"="ZLIB") or ("orc.compress"="SNAPPY") or ("orc.compress"="NONE")
TBLPROPERTIES ("transactional"="true") or ("transactional"="false")
TBLPROPERTIES ("NO_AUTO_COMPACTION"="true") or ("NO_AUTO_COMPACTION"="false"), the default is "false" 
TBLPROPERTIES ("compactor.mapreduce.map.memory.mb"="mapper_memory") 
TBLPROPERTIES ("compactorthreshold.hive.compactor.delta.num.threshold"="threshold_num") 
TBLPROPERTIES ("compactorthreshold.hive.compactor.delta.pct.threshold"="threshold_pct") 
TBLPROPERTIES ("auto.purge"="true") or ("auto.purge"="false") 
TBLPROPERTIES ("EXTERNAL"="TRUE") 

(1)comment:可以用來定義表的描述信息
(2)hbase.table.name:hive通過 storage handler(暫放)將hive與各種工具聯繫起來,這是是使用hive接入hbase時,設置的屬性(暫放)
(3)immutable:顧名思義‘不可變的’,當表的這個屬性爲true時,若表中無數據時可以insert數據,但是當表已經有數據時,insert操作會失敗。不可變表用來防止意外更新,避免因腳本錯誤導致的多次更新,而沒有報錯。本人實際中還沒用到這個屬性。
(4)orc.compress:這是orc存儲格式表的一個屬性,用來指定orc存儲的壓縮方式(暫放)。
(5) transactional,NO_AUTO_COMPACTION,compactor.mapreduce.map.memory.mb,compactorthreshold.hive.compactor.delta.num.threshold,compactorthreshold.hive.compactor.delta.pct.threshold:這5個屬性與hive的事務支持有關,先不做了解。
(6)auto.purge:當設置爲ture時,刪除或者覆蓋的數據會不經過回收站,直接被刪除。配置了此屬性會影響到這些操作: Drop Table, Drop Partitions, Truncate Table,Insert Overwrite.
(7)EXTERNAL:通過修改此屬性可以實現內部表和外部表的轉化。

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