内部表与外部表——头歌

任务描述

本关任务:创建外部表,并导入数据。

相关知识

为了完成本关任务,你需要掌握:1.表的各种操作。

内部表和外部表

Hive 默认创建内部表(managed table),存储位置在 hive.metastore.warehouse.dir 设置,默认位置是 /user/hive/warehouse。导入数据到内部表的时候是将文件剪切(移动)到指定位置,即原有路径下文件不再存在。删除内部表的时候,元数据和 HDFS 对应的目录节点都将被删除。默认创建的就是内部表,语法如下:

  1. create table table_name
  2. (
  3. field1 data_type comment 'a comment',
  4. field2 data_type comment 'a comment',
  5. ...
  6. )
  7. row format delimited ## 行分割
  8. fields terminated by',' ## 字段分隔符
  9. lines terminated by'\n' ## 行分隔符
  10. stored as textfile; ## 作为文本存储

案例如:

  1. create table test
  2. (
  3. id int comment 'userID',
  4. a string comment 'userName'
  5. )
  6. row format delimited ## 行分割
  7. fields terminated by' ' ## 字段分隔符
  8. lines terminated by'\n' ## 行分隔符
  9. stored as textfile; ## 作为文本存储

其中 comment 可以省略。后面的几行规定了外部导入文件的数据格式。例如上述要求为:外部数据的组织是行分割,每个字段之间用逗号分割,每一行数据之间用换行符分割,文件格式为 txt。在某名为 data.txt 的外部文件中有以下格式的数据可以被正确导入:

  1. 2014001 小王1
  2. 2014002 小李2
  3. 2014003 小明3
  4. 2014004 阿狗4
  5. 2014005 姚明5

我们可以从外部文件导入数据,命令如下:

load data local inpath 'data_path' into table table_name;

其中 data_path 是外部文件的路径。

外部表文件可以在外部系统上,只要有访问权限就可以。外部表导入文件时不移动文件,仅仅是添加一个 metadata。删除外部表时,仅元数据被删除,HDFS 对应的目录节点不会被删除。外部表指向的数据发生变化的时候会自动更新,不用特殊处理。创建外部表命令添加一个 external 即可,

create external table table_name (xxx);

分辨外部表内部表可以使用 desc formatted table_name; 命令查看。

表操作

进入数据库:use database_name;

查看当前数据库下所有表: show tables;

查看某个数据库下所有表: show tables in db_name;

查看表结构:desc table_name;

向表中插入数据:insert into table_name values(value1,value2,...);

增加一个新列:alter table test add columns (new_column data_type comment 'a comment');

查看表数据:select * from table_name;

创建一张类似表 table_name 结构的表 table_name1:create table table_name1 like table_name;

表的重命名:alter table table_name rename to table_name1;

编程要求

在当前目录下创建一个外部数据文件,其中的内容为:

  1. 2014001,小王1
  2. 2014002,小李2
  3. 2014003,小明3
  4. 2014004,阿狗4
  5. 2014005,姚明5

创建一张名为 student 的内部表,导入上述外部文件的数据。然后插入以下数据。

  1. 2014006,小王6
  2. 2014007,小李7

测试说明

平台会对你的操作结果进行测试。

实验过程

打开vi编辑器

复制代码
vim data.txt

按i在data.txt中加入以下内容

复制代码
2014001,小王1
2014002,小李2
2014003,小明3
2014004,阿狗4
2014005,姚明5

按esc,输入:wq保存退出

打开hive

复制代码
hive

输入以下内容

复制代码
create table student
(
id int ,
a string 
)
row format delimited   
fields terminated by ','
lines terminated by '\n'
stored as textfile;
load data local inpath '/root/data.txt' into table student;
insert into student values(2014006,"小王6");
insert into student values(2014007,"小李7");

最后进行查询

复制代码
select * from student; 

测试通过

相关推荐
Treh UNFO1 分钟前
nginx的重定向
大数据·数据库·nginx
天诚智能门锁12 分钟前
天诚cat.1人脸公租房智能锁及管控平台助力三门县公租房管理
大数据·人工智能·物联网·智慧城市·公租房
2601_9564141421 分钟前
2026年5月PCB厂家推荐:TOP5榜产品应对5G基站散热挑战
大数据·人工智能·5g
Justice Young26 分钟前
Flink第五章:DataStream API
大数据·flink
千月落29 分钟前
HDFS数据迁移
大数据·hadoop·hdfs
N串1 小时前
2.4 采购部门——权力来自信息不对称
大数据
南棱笑笑生1 小时前
20260503给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Android14时适配AP6256
大数据·elasticsearch·搜索引擎·rockchip
王莎莎-MinerU1 小时前
从 PDF 到知识资产:MinerU 文档解析如何成为企业 RAG 系统的“数据基石”
大数据·人工智能·pdf·个人开发
缝艺智研社1 小时前
誉财 YC - 21 平板下摆机:服装下摆与袖口加工的卓越之选
大数据·人工智能·自动化·电脑·新人首发·线上模板机
逸Y 仙X2 小时前
文章二十:Elasticsearch高亮搜索完全指南
java·大数据·运维·elasticsearch·搜索引擎·全文检索