內表和外表
內表(Managed Table)
也稱爲“管理表”,其數據文件、元數據及統計信息全部由Hive進程自身管理.內表的數據存儲在由hive.metastore.warehouse.dir指定的路徑下,類似於/user/hive/warehouse/dbname.db/tablename/。刪除內表時,其數據文件、元數據信息都會統一刪除,一般在生產環境下不會使用內表,需要創建臨時表或者聲明週期完全有Hive管理的表時,推薦使用內表
外表(External Table)
通過原信息或者Schema描述外部文件的結構。外表的文件可以被Hive之外的進程訪問和管理,例如HDFS。當刪除外表時,刪除的爲hive算管理的元數據信息,由外部文件系統所管理的數據是不會被刪除的
區分內外表
在hive中執行desc fromatted 表名
來查看錶是屬於內表還是外表
文件存儲格式
在hive的建表過程中,通過STORED AS來指定表的存儲格式
- STORED AS TEXTFIEL hive表的默認存儲格式
- STORED AS SEQUENCEFILE 已壓縮的序列化文件
- STORED AS ORC 存儲爲ORC格式的文件
- STORED AS PARQUET 存儲Parquet文件 列式格式文件
- STORED AS AVRO 存儲AVRO格式的文件
- STORED AS RCFILE 存儲RC(Record Columnar)格式文件
- STORED BY 由非內置id表格式存儲,例如用HBase存儲數據
通常使用列式存儲的方式進行數據的存儲,如ORC、PARQUET、AVRO等
序列化和反序列化
序列化是將數據對象轉化爲字節序列的一個過程.
反序列化是序列化的逆過程,是將字節序列轉化爲數據對象的過程
序列化的用途
- 對象的持久化
- 對象數據的網絡傳輸