hive表壓縮
㈠ hive 外部表和內部表 數據壓縮上有區別嗎
Hive中內部表與外部表的區別:
Hive 創建內部表時,會將數據移動到數據倉庫指向的路徑;若創建外部表,僅記錄數據所在的路徑,不對數據的位置做任何改變。在刪除表的時候,內部表的元數據和數據會被一起刪除,而外部表只刪除元數據,不刪除數據。這樣外部表相對來說更加安全些,數據組織也更加靈活,方便共享源數據。
需要注意的是傳統資料庫對表數據驗證是 schema on write(寫時模式),而 Hive 在load時是不檢查數據是否符合schema的,hive 遵循的是 schema on read(讀時模式),只有在讀的時候hive才檢查、解析具體的數據欄位、schema。
讀時模式的優勢是load data 非常迅速,因為它不需要讀取數據進行解析,僅僅進行文件的復制或者移動。
寫時模式的優勢是提升了查詢性能,因為預先解析之後可以對列建立索引,並壓縮,但這樣也會花費要多的載入時間。
㈡ 大數據中常見數據存儲格式與壓縮格式
大數據時代,存儲和壓縮數據的方式至關重要。為節省空間並確保數據完整性,我們採用了多種策略,包括不同的存儲格式和壓縮演算法。存儲格式主要有單行/列式存儲、混合行列式存儲,其中行式存儲適用於實時處理(OLTP),列式存儲擅長數據分析(OLAP),混合存儲則結合兩者特性。常見的存儲格式有Parquet(適合數據分析)、ORC(Hive特有)、TextFile(簡單但效率低)、SequenceFile(Hadoop API兼容)和AVRO(靈活且支持多種功能)。
壓縮格式的選擇同樣關鍵,常見的有Deflate、Snappy、ZLib、Gzip、Bzip2、LZ4和LZO等。壓縮比和速度是關鍵考慮因素:Bzip2提供最高壓縮比但速度慢,Snappy速度最快但壓縮率低;Gzip和ZLib適中,支持Hadoop native庫;LZO速度快且支持split,但需要額外安裝;LZ4和Deflater注重速度。
在數據分層中,ODS層(源數據層)傾向於使用高壓縮比的ZLIB、GZIP或BZIP2,而DW層(數據倉層)和DA層(數據應用層)由於查詢頻繁,適合選用解壓縮速度較快的Snappy。這樣,我們可以根據數據特性和需求,靈活選擇最優化的存儲和壓縮方案,以提升存儲效率和查詢性能。