Hive 的元數據存儲在 RDBMS 中,除元數據外的其它所有數據都基於 HDFS 存儲。默認情況下,Hive 元數據保存在內嵌的 Derby 數據庫中,只能允許一個會話連接,只適合簡單的測試。實際生產環境中不適用,為了支持多用戶會話,則需要一個獨立的元數據庫,使用 MySQL 作為元數據庫,Hive 內部對 MySQL 提供了很好的支持。
獲取更多Hadoop、HDFS、HBase、MapReduce、YARN、Hive等等技術內容,可訪問下面的Hadoop大數據技術專欄。
專欄
Hadoop v3.1大數據技術快速入門
33.9幣
22人已購
Hive 中的表分為內部表、外部表、分區表和 Bucket 表。
內部表和外部表的區別:
- 刪除內部表,刪除表元數據和數據。
- 刪除外部表,刪除元數據,不刪除數據。
內部表和外部表的使用選擇:
- 大多數情況,它們的區別不明顯,如果數據的所有處理都在 Hive 中進行,那麼傾向於選擇內部表,但是如果 Hive 和其他工具要針對相同的數據集進行處理,外部表更合適。
- 使用外部表訪問存儲在 HDFS 上的初始數據,然後通過 Hive 轉換數據並存到內部表中。
- 使用外部表的場景是針對一個數據集有多個不同的 Schema。
- 通過外部表和內部表的區別和使用選擇的對比可以看出來,hive 其實僅僅只是對存儲在 HDFS 上的數據提供了一種新的抽象。而不是管理存儲在 HDFS 上的數據。所以不管創建內部表還是外部表,都可以對 hive 表的數據存儲目錄中的數據進行增刪操作。
專欄
Spring Cloud微服務架構項目實戰
33.9幣
40人已購
分區表和分桶表的區別:
Hive 數據表可以根據某些字段進行分區操作,細化數據管理,可以讓部分查詢更快。同時表和分區也可以進一步被劃分為 Buckets,分桶表的原理和 MapReduce 編程中的 HashPartitioner 的原理類似。
分區和分桶都是細化數據管理,但是分區表是手動添加區分,由於 Hive 是讀模式,所以對添加進分區的數據不做模式校驗,分桶表中的數據是按照某些分桶字段進行 hash 散列形成的多個文件,所以數據的準確性也高很多。
專欄
SkyWalking分佈式鏈路追蹤和監控
33.9幣
50人已購