HiveDDL创建表及内外部表的区别和转换

1.创建表
在这里插入图片描述
(1) COMMENT:为表和列添加注释。
(2) ROW FORMAT DELIMITED 列与列之间\t分隔 行与行之间\n分隔
(3) STORED AS指定存储文件类型
常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)。如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。
2.内部表与外部表
1)内部表:默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表Hive会或多或少地控制着数据的生命周期。Hive默认情况下会将这些表的数据存储在由配置 hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。 当我们删除一个管理表时,Hive也会删除这个表中数据。管理表不适合和其他工具共享数据。
2)外部表:因为表是外部表,所以Hive并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。
下面以一个具体的例子说明内部表与外部表的区别。
首先,创建一个外部表:
在这里插入图片描述
将abc.txt中的数据加载到表中。
在这里插入图片描述在这里插入图片描述
在hdfs上可查到
在这里插入图片描述
之后删除此外部表
在这里插入图片描述
查询所有表发现确实没有此表
在这里插入图片描述
但在hdfs上此表仍然存在
在这里插入图片描述
此时,数据在,但表已删除
如果将删除了的表再次创建
在这里插入图片描述
查询表中的数据,表不为空
在这里插入图片描述
说明元数据与实际数据谁先有都可以,可以先在hdfs上存储元数据,再创建表;也可以先创建表,再存储元数据。
接下来创建一个内部表:
在这里插入图片描述
将abc.txt导入此表
在这里插入图片描述
在hdfs上查看
在这里插入图片描述
删除此表
在这里插入图片描述
在hdfs上查看,此表不存在
在这里插入图片描述
由此可见内部表与外部表的区别:内部表删除后,hdfs上的元数据一并删除,而外部表删除后,hdfs上的元数据并未删除。
管理表和外部表的使用场景:
每天将收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过SELECT+INSERT进入内部表。
3.管理表与外部表的互相转换
1)查询表的类型
在这里插入图片描述
2)修改为内部表
在这里插入图片描述
3)再次查询表的类型
在这里插入图片描述
若将内部表改为外部表,则为’EXTERNAL’='TRUE
注:‘EXTERNAL’=‘TRUE’和’EXTERNAL’='FALSE’为固定写法,区分大小写!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值