内表和外表
内表(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等
序列化和反序列化
序列化是将数据对象转化为字节序列的一个过程.
反序列化是序列化的逆过程,是将字节序列转化为数据对象的过程
序列化的用途
- 对象的持久化
- 对象数据的网络传输