首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive的数据模型

Hive的数据模型

原创
作者头像
ZHANGHAO
修改2018-12-17 10:41:28
1.1K0
修改2018-12-17 10:41:28
举报
文章被收录于专栏:张浩的专栏张浩的专栏

内部表(Table)

内部表与数据库中的Table在概念上是类似的

每一个Table在Hive上都有一个对应的目录存储数据

所有的Table数据(不包括External Table)都保存在这个目录中

删除表时,元数据和数据都会删除

创建内部表

--创建t1表

CREATE TABLE t1(
    tid int,
    tname string,
    age int
);

指定存储数据的位置

CREATE TABLE t2(
    tid int,
    tname string,
    age int
)
LOCATION '/mytable/hive/t2';

指定列分隔符

CREATE TABLE t3(
    tid int,
    tname string,
    age int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

从已有的表创建并指定分隔符为逗号

CREATE TABLE t4 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
AS SELECT * FROM tablename;

分区表(Partition)

使用分区可以提高查询的效率

partition 对应数据库中的Partition列的密集索引

在Hive中,表中的一个Partition对应表下的一个目录,所有的Partition的数据都存储在对应的目录中

创建分区表

CREATE TABLE partition_table(
    sid int,
    sname string
)PARTITIONED BY (gender string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

插入数据

INSERT INTO TABLE partition_table partition(gender='M')
SELECT sid,sname FROM table_name WHERE gender='M';

查看对比分区表与没有分区表的执行计划,执行计划由从上往下,从右往左的顺序。

explain SELECT * FROM partition_table WHERE gender='M';
explain SELECT * FROM student1;

外部表

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

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

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

创建外部表

CREATE EXTERNAL TABLE external_student(
    sid int,
    sname string,
    age int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 'hdfs_location';

桶表(Bucket Table)

降低系统的热块,提高查询的速度

桶表是对数据进行哈希取值,然后放到不同的文件中

创建桶表

CREATE TABLE bucket_table(
    sid int,
    sname string,
    age int
)
CLUSTERED BY(sname) INTO 5 BUCKETS;

视图(View)

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

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

视图可以简化复杂的查询

创建视图

CREATE VIEW onion_referrers(url COMMENT 'URL of Referring page')
  COMMENT 'Referrers to The Onion website'
  AS
  SELECT DISTINCT referrer_url
  FROM page_view
  WHERE page_url='http://www.theonion.com';

删除视图

DROP VIEW onion_referrers;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内部表(Table)
    • 创建内部表
      • 指定存储数据的位置
        • 指定列分隔符
          • 从已有的表创建并指定分隔符为逗号
          • 分区表(Partition)
            • 创建分区表
              • 插入数据
                • 查看对比分区表与没有分区表的执行计划,执行计划由从上往下,从右往左的顺序。
                • 外部表
                  • 创建外部表
                  • 桶表(Bucket Table)
                    • 创建桶表
                    • 视图(View)
                      • 创建视图
                        • 删除视图
                        相关产品与服务
                        数据库
                        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档