赞
踩
存储位置:Hive内部表的数据默认存储在Hadoop Distributed File System (HDFS) 中的一个指定目录下,这个目录由Hive自动管理。
元数据管理:Hive内部表的元数据(如表结构、分区信息等)存储在 Hive Metastore 中,这是一个集中式的服务,用于存储和管理所有Hive表的元数据。
数据生命周期:删除Hive内部表时,不仅会删除表的元数据,还会从HDFS中删除与该表相关联的实际数据文件。
独立性:由于Hive完全管理内部表的数据和元数据,因此这些表对Hive具有完全的依赖性。如果不再使用Hive,内部表的数据将无法直接通过其他方式访问。
表操作限制:对Hive内部表进行数据修改或移动等操作可能会受到限制,因为这些操作可能会影响Hive对数据的管理和追踪。
创建park
数据库,执行命令CREATE DATABASE park
在MySQL里查看数据库信息
注意:数据库park
的DB_ID是2
,后面我们会用到它。
在HDFS上查看park
数据库对应的目录/user/hive/warehouse/park.db
在数据库park
里里创建student
内部表
切换到park
数据库后,执行语句:CREATE TABLE student (id int, name string, age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '';
在MySQL查看表信息,执行语句:SELECT TBL_ID, TBL_NAME, TBL_TYPE, NAME FROM TBLS INNER JOIN DBS ON TBLS.DB_ID = DBS.DB_ID;
INSERT INTO
命令插入数据INSERT INTO student VALUES
(1, '李晓敏', 18),
(2, '陈燕文', 19),
(3, '唐俊涵', 18);
park
数据库在HDFS对应的目录student
表在HDFS对应的目录000000_0
的内容user.txt
文件hiveuser
目录user.txt
上传到HDFS的/hiveuser
目录CREATE EXTERNAL TABLE
命令创建外部表。/hiveuser
目录创建外部表hiveuser
,执行语句:CREATE EXTERNAL TABLE hiveuser (id int, name string, age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION '/hiveuser';
hiveuser
全部记录19
岁以上的记录park
数据库里表的信息(注意:park
数据库的DB_ID是2
)。MANAGED_TABLE
EXTERNAL_TABLE
student
,执行语句:DROP TABLE student;
student
表对应的目录/user/hive/warehouse/park.db/student
是否还存在hiveuser
,执行语句:DROP TABLE hivesuer;
hiveuser
表对应的目录/hiveuser
是否还存在park
(其DB_ID是2
)里是否还有表记录总结来说,内部表是Hive的默认表类型,其数据存储在Hive管理的目录下,当删除内部表时,相关HDFS上的数据也会被一并清除。创建和管理内部表的过程包括建表、加载数据以及进行DML操作等步骤。
外部表则为用户提供了更为灵活的数据管理方式,它指向HDFS上已存在的数据目录,删除外部表时仅移除元数据信息而不影响实际数据。在实际应用中,如需与其他系统共享数据源或避免误删重要数据,通常会选用外部表。展望未来使用场景,对于持续接入的外部数据源或需要长期保留的历史数据,合理运用Hive外部表将有助于提高数据处理效率与安全性,但同时需要注意对底层数据文件的维护与管理,防止由于表定义缺失导致的数据无法访问等问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。