内部表与外部表——头歌

任务描述

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

相关知识

为了完成本关任务,你需要掌握: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; 

测试通过

相关推荐
牛企老板俱乐部15 分钟前
企跃龙门 GEO 智能优化系统正式发布 抢占 AI 搜索时代企业获客新赛道
大数据·人工智能
企业智能研究11 小时前
企业如何落地企微私域智能客服来降本增效:从技术选型到实施落地的完整指南
大数据·人工智能·企业微信·智能客服
delishcomcn11 小时前
边缘计算+AI模型:电化铝分切装备的智能化改造路径
大数据·人工智能·边缘计算
太原geo小侦探11 小时前
2026门店AI流量实测测评:同为实体门店,AI问答曝光差距在哪?
大数据·人工智能·生活·流量运营·内容运营
AI大法师12 小时前
一个机场如何被做成 IP 场景:宝可梦机场的设计方法总结
大数据·人工智能·设计模式·新媒体运营
朴马丁14 小时前
从制造到智造:PLM如何赋能企业研发创新
大数据·运维·人工智能·食品行业·流程行业plm·化工新材料行业·新能源材料行业
大大大大晴天️17 小时前
Hudi + StarRocks 查询加速:原理与实践
大数据·starrocks·hudi
夜郎king17 小时前
解决AI图文解析偏差:CodeBuddy多模型交叉校验+腾讯地图Skill经纬度定位实战
大数据·人工智能
智慧物业老杨17 小时前
物业费公共收益维修资金三类资金分账的合规管控
大数据·人工智能·物联网
不动明王198417 小时前
Presto 查询引擎内核详解:Worker 本地执行模型——从物理计划到可调度执行单元
大数据·presto·湖仓·查询引擎内核·pipeline执行