『软件架构』中的表分为内部表、外部表、分区表和 Bucket 表,Hive

Hive的元数据存储在RDBMS中 , 除元数据外的其它所有数据都基于HDFS存储 。 默认情况下 , Hive元数据保存在内嵌的Derby数据库中 , 只能允许一个会话连接 , 只适合简单的测试 。 实际生产环境中不适用 , 为了支持多用户会话 , 则需要一个独立的元数据库 , 使用MySQL作为元数据库 , Hive内部对MySQL提供了很好的支持 。
获取更多Hadoop、HDFS、HBase、MapReduce、YARN、Hive等等技术内容 , 可访问下面的Hadoop大数据技术专栏 。
『软件架构』中的表分为内部表、外部表、分区表和 Bucket 表,Hive
文章图片
Hive中的表分为内部表、外部表、分区表和Bucket表 。 内部表和外部表的区别:
删除内部表 , 删除表元数据和数据 。
删除外部表 , 删除元数据 , 不删除数据 。 内部表和外部表的使用选择:
大多数情况 , 它们的区别不明显 , 如果数据的所有处理都在Hive中进行 , 那么倾向于选择内部表 , 但是如果Hive和其他工具要针对相同的数据集进行处理 , 外部表更合适 。
使用外部表访问存储在HDFS上的初始数据 , 然后通过Hive转换数据并存到内部表中 。
使用外部表的场景是针对一个数据集有多个不同的Schema 。
通过外部表和内部表的区别和使用选择的对比可以看出来 , hive其实仅仅只是对存储在HDFS上的数据提供了一种新的抽象 。 而不是管理存储在HDFS上的数据 。 所以不管创建内部表还是外部表 , 都可以对hive表的数据存储目录中的数据进行增删操作 。
分区表和分桶表的区别:
Hive数据表可以根据某些字段进行分区操作 , 细化数据管理 , 可以让部分查询更快 。 同时表和分区也可以进一步被划分为Buckets , 分桶表的原理和MapReduce编程中的HashPartitioner的原理类似 。
『软件架构』中的表分为内部表、外部表、分区表和 Bucket 表,Hive
文章图片
【『软件架构』中的表分为内部表、外部表、分区表和 Bucket 表,Hive】分区和分桶都是细化数据管理 , 但是分区表是手动添加区分 , 由于Hive是读模式 , 所以对添加进分区的数据不做模式校验 , 分桶表中的数据是按照某些分桶字段进行hash散列形成的多个文件 , 所以数据的准确性也高很多 。
『软件架构』中的表分为内部表、外部表、分区表和 Bucket 表,Hive
文章图片