Hive 面试题(十)

1. 为什么内部表的删除,就会将数据全部删除,而外部表只删除表结构? 为什么用外部表更好 ?

内部表和外部表的删除行为之所以不同,是因为它们的设计目的和使用场景有所区别:

内部表删除行为:
  • 生命周期管理:内部表的生命周期与Hive紧密绑定。当内部表被删除时,Hive会认为表及其数据不再需要,因此会同时删除表的元数据和数据文件,以释放存储空间和维护数据的一致性。
  • 数据安全:内部表提供了一种安全的数据管理方式,确保在删除表时不会遗留不需要的数据。
外部表删除行为:
  • 元数据与数据分离:外部表的元数据存储在Hive中,而数据文件存储在HDFS上指定的位置。这种设计允许数据文件独立于Hive的生命周期存在。
  • 数据共享:外部表使得数据可以被多个系统或工具共享。即使Hive表被删除,数据文件仍然可以在其他系统中使用。
  • 数据保护:删除外部表时,Hive不会删除数据文件,从而保护数据不被意外删除,这对于重要的数据备份和跨系统的数据分析非常有用。
为什么使用外部表更好:
  1. 数据重用:外部表允许数据在不同的分析和处理系统之间重用,无需复制数据。
  2. 数据保护:外部表提供了额外的数据保护层,因为即使表被删除,原始数据仍然安全地存储在HDFS上。
  3. 跨系统共享:外部表支持跨Hive实例的数据共享,这对于大型组织中不同团队之间的协作非常有用。
  4. 数据管理:外部表允许数据由其他系统或应用程序管理,这有助于维护数据的一致性和完整性。
  5. 灵活性:外部表提供了更大的灵活性,使得数据可以在不同的查询和分析工具之间轻松迁移。
总结:

选择内部表还是外部表取决于具体的使用场景和需求。如果数据是临时的,或者完全由Hive管理,内部表可能是更好的选择。如果数据需要跨系统共享,或者需要额外的数据保护,外部表可能更合适。在实际应用中,根据数据的重要性、使用频率和共享需求来做出选择。

2. 简述Hive建表语句?创建表时使用什么分隔符 ?

在 Hive 中,创建表的基本语法如下:

CREATE TABLE [IF NOT EXISTS] [db_name.]table_name (
  column1_name column1_datatype [COMMENT 'column1_comment'],
  column2_name column2_datatype [COMMENT 'column2_comment'],
  ...
)
[COMMENT 'table_comment']
ROW FORMAT DELIMITED
FIELDS TERMINATED BY char
[LINES TERMINATED BY char]
[STORED AS {TEXTFILE | SEQUENCEFILE | RCFILE | ORC | PARQUET | AVRO | JSON}]
[LOCATION 'table_path']
[TBLPROPERTIES (property_name=property_value, ...)];

下面是对创建表语句中各个部分的简要说明:

  • IF NOT EXISTS:可选,如果表已存在,则不创建新表。
  • db_name:可选,指定数据库名称。
  • table_name<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依邻依伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值