Hive内部表及外部表

这篇具有很好参考价值的文章主要介绍了Hive内部表及外部表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、内部表

内部表,也叫托管表,是Hive在创建表时的默认表。

特点:在内部表被删除后,表的元数据和表数据都从HDFS中完全删除

create table if not exists 表名(

字段名称 字段类型,

...

字段名称 字段类型

comment 表的注释

raw format delimited

fields terminated by '分隔符'  #列以'分隔符'分割

line terminated by '分隔符'   #此分隔符只能是‘\n’,目前hive只支持‘\n’,行分割也是默认‘\n’

stored as 文件存储类型 #常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、      #TEXTFILE(文本)、RCFILE(列式存储格式文件)如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。

location 存储在HDFS上的位置 ;

适用场景:

ETL数据清理是用内部表做中间表,清理时HDFS上的文件同步删除

在误删的情况下,易于恢复的数据,用内部表

统计分析时,不涉及数据共享数据的情况

需要对元数据和表数据进行管理时

①:首先创建一个student内部表

create table if not exists student(
id string,
name string
)
comment student
row format delimited
fields terminated by '\t'
line terminated by '\n';

②查看所建的表的全部信息----其中Table Type 表示表的类型

(内部表Internal TABLE/Managed TABLE,外部表EXTERNAL TABLE)

Hive内部表及外部表

内部表数据存储的位置是hive.metastore.warehouse.dir,如果创建内部表时没有指定location,就会在/user/hive/warehouse/下新建一个表目录,其余情况同上。

小编在配置时更改了文件 所以此地的默认目录为/data/hive/warehouse/

2、外部表

特点:表中的数据在删除后仍然在HDFS中。

如果我们创建一个外部表,在删除表之后,只有与表相关的元数据被删除,而不会删除表的内容。

声明外部表的关键字:external

声明外部表的基本语法:

create external table if not exists 表名(

字段名称 字段类型,

...

字段名称 字段类型

raw format delimited

fields terminated by '分隔符'

验证删除一个外部表表数据仍旧存在

①:首先创建一个student2外部表

create external table if not exists student2(
id string,
name string
)
row format delimited
fields terminated by '\t';

②查看所建的表的全部信息----其中Table Type 表示表的类型

(内部表Internal TABLE/Managed TABLE,外部表EXTERNAL TABLE)

Hive内部表及外部表

③将数据加载至student2表中

hive> load data local inpath '/opt/student.txt' into table student2;

④查看表中数据

hive> select * from student2;

Hive内部表及外部表

⑤将外部表删除

hive> drop table student2;

⑥查看是否删除成功

hive> select * from student2;

FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'student2'

⑦查看HDFS路径下是否保留表数据

[root@master ~]# hadoop fs -cat /data/hive/warehouse/student2/student.txt

Hive内部表及外部表

外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);

 Hive内部表及外部表

外部表适用场景

对于恢复误删的数据困难的情况,例如:实时采集的数据

外部表的优点:

可以共享数据,且不加载到hive中,减少数据加载,落地

3、管理表(内部表)与外部表互相转换

(1)查询已有表的类型

hive> desc formatted student;

Hive内部表及外部表

 (2)修改内部表student为外部表

hive> alter table student set tblproperties('EXTERNAL'='TRUE');

(3)查询更改后表的类型:

hive> desc formatted student;

Hive内部表及外部表

 (4)修改外部表student为内部表

hive> alter table student set tblproperties('EXTERNAL'='FALSE');

(5)查询更改后表的类型:

hive> desc formatted student;

Hive内部表及外部表文章来源地址https://www.toymoban.com/news/detail-446768.html

到了这里,关于Hive内部表及外部表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive表---内部表、外部表、数据导入和导出

    创建内部表: create table [if not exists] 内部表名(字段名 字段类型 , 字段名 字段类型 , … )[row format delimited fields terminated by ‘字段分隔符’] ; 复制内部表: 方式1: like方式复制表结构 方式2: as 方式复制表结构和数据 删除内部表: drop table 内部表名; 注意: 删除内部表效果是mysql中表

    2024年04月26日
    浏览(22)
  • Hive内部表和外部表的区别

    未被 external 修饰的是 内 部表 被 external 修饰的为 外 部表。 区别: 内 部表数据由 Hive 自身管理; 外 部表数据由 HDFS 管理; 内 部表数据存储的位置是 hive.metastore.warehouse.dir(默认:/user/hive/warehouse) ; 外 部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的

    2024年02月16日
    浏览(31)
  • Hive创建外部表详细步骤

    ① 在hive中执行HDFS命令:创建/data目录 ② 在hive中执行HDFS命令:上传/emp.txt至HDFS的data目录下,并命名为emp_out ③ 创建外部表:emp_out ④ 验证: 查询结果如下:   注意: emp.txt文件内容为:

    2024年02月14日
    浏览(32)
  • Hive创建内部表详细步骤

    1.创建内部表SQL语句 先将emp.txt文件上传到linux本地根目录下( /emp.txt )和 HDFS文件系统的根目录下( /emp.txt )。 ② 将Linux本地数据导入至emp_in表(复制操作) ③ 将HDFS数据导入至emp_in表(剪切操作) 注意:emp.txt文件的内容信息如下:

    2024年02月14日
    浏览(27)
  • 大数据:hive数据库的操作语法,数据表,内部表,external外部表,数据导入导出load,insert

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月08日
    浏览(64)
  • Hive建表时,指定分隔符

     一.建表语句 二.语句分析 ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\',\\\' : 这个子句表明Hive将使用 \\\',\\\' 字符作为列分隔符,即分隔字段。 ROW FORMAT DELIMITED COLLECTION items terminated BY \\\'_\\\'  :这个子句表明Hive将使用 \\\'_\\\' 作为集合元素间的分隔符。 ROW FORMAT DELIMITED MAP KEYS TERMINATED BY \\\':\\\' :这个

    2024年02月11日
    浏览(40)
  • hive修改表或者删除表时卡死问题的解决(2023-08-08)

    终于:尝试出来一个新的方法 将内部表转化成外部表,然后再做表的修改操作 注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写! 1.修改外部表temp为内部表(temp为表名) 2.修改内部表temp为外部表

    2024年02月13日
    浏览(25)
  • MySQL创建表及插入数据

    一、创建英雄表(hero)

    2024年01月17日
    浏览(35)
  • 【Sql Server】创建表,修改表及列约束和表约束的设置

    友情提示:菜鸡用土话写的文章 文章目录 目录 文章目录 前言 一、 实验目的 二、 实验要求 三、 实验内容 实验2-1 创建表 表2.1 “student”表的结构 表2.2 “course”表的结构 表2.3 “sc”表的结构 二、实验步骤 1.使用SSMS创建“student”表 ​编辑 2.修改表 ​编辑 4.设置唯一性约

    2023年04月15日
    浏览(24)
  • aws-msk-托管kafka集群的简单使用(VPC内部访问:无验证和SASL认证)

    1.使用控制台创建即可 根据实例类型创建需要至少15分以上,可以提前创建好ec2实例和Secrets Manager,一会会使用到 2. 创建Secrets Manager (使用无认证时请跳过) 官方文档:https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/msk-password.html 必须以AmazonMSK_前缀,并且不能使用默认加密方式

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包