Hive--数据模型

Hive是基于Hadoop的数据仓库,因此Hive中的数据都保存在HDFS系统中的。在Hive中创建一个表即在HDFS中创建一个目录,而在表中的数据就对应与文件夹下的文件。

一、Table 内部表

        1、与数据库中的Table在概念上类似

        2、每一个Table在Hive中都有一个相应的目录存储数据

        3、所有的Table数据(不含external table)都保存在这个目录中

        4、删除表时,元数据与数据都会被删除

        5、创建内部表

              1)默认设置(位置:/user/hive/warehouse,分隔符:Tab)

                 

              2)指定位置:

                 

              3)指定分隔符:csv格式分隔符为“,”

                 

              4)创建表的同时插入数据,hdfs中的文件内容物分隔符

                 

              5)创建表的同时插入数据,指定分隔符 “,”

                 

             

              6)修改表,如增加一列

               

二、Partition 分区表

       1、Partition对应于数据库的Partition列的密集索引

       2、在hive 中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存在对应的目录中

       3、为什么需要分区表

             

             例如表中第三列性别,查询时需全表扫描,而按照性别创建分区表后可以提高查询速度。

        4、创建分区表 

             

               

三、External Table 外部表

       1、指向已经在HDFS中存在的数据,可以创建Partition

       2、它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异

       3、外部表只是一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当                 删除一个外部表时,仅删除该链接。

        

        例如:在Hive上创建外部表student时,需指明列明、列的属性及location,location指向HDFS中数据文件

        当查询外部表student时,就将HDFS中的数据文件读取到外部表中并返回给客户端。

       4、创建外部表

             1)创建文件并上传HDFS

         

             2)创建外部表

          

四、Bucket Table 桶表

        1、桶表是对数据进行哈希取值,然后放到不同文件中存储,可以避免热块,提高查询速度

             

        例如:按照第二列name进行分桶,Tom,Jerry,Scott进行哈希运算后结果相同则分到同一桶中

         2、创建桶表

             

         注意:查看该桶表发现与内部表一样,只是在插入数据时,会对sname进行哈希运算分到5个桶中

五、视图

         1、视图是一个虚表,是一个逻辑概念;可以跨越多个表

         2、视图建立在已有表的基础上,视图赖以建立的这些表称为基表

         3、视图可以简化复杂的查询

         4、创建视图

               

         5、能够存数据的视图称为物化视图,Mysql和Oracle支持物化视图,但Hive不支持

猜你喜欢

转载自blog.csdn.net/weixin_44371151/article/details/88121824