内部表与外部表——头歌

任务描述

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

相关知识

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

测试通过

相关推荐
大鳥3 分钟前
JSON 解析最佳实践:从入门到生产级优化
hive·sql·spark·json
pjj198544 分钟前
Spark SQL 核心知识详解:DataFrame、DSL 与数据源
大数据·sql·spark
凤山老林6 分钟前
授权模型只会RBAC?深入 ABAC 授权模型,实现权限判断做成策略引擎
大数据·数据库·算法
starzy19906 分钟前
KafkaProducer 源码深度剖析:支撑高吞吐的数据结构设计
大数据·数据结构·kafka
饼饼学习空间智能8 分钟前
机器人规模化部署平台怎么选?Fleet、VDA 5050、多机器人调度与运营闭环解析
大数据·深度学习·机器学习
geovindu9 分钟前
sql:SQL Views and Materialized Views using mysql 9.0
大数据·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
浔溺13 分钟前
Spark核心基石:RDD全方位深度解析(原理、算子、实战、优化)
大数据·分布式·spark
Sayai35 分钟前
Elasticsearch Rollup 汇算索引实战:监控指标多粒度预聚合查询,附 painless 时间窗取每日最新值
大数据·运维·elasticsearch·搜索引擎·性能优化·监控
ha_lydms36 分钟前
Xml Functions(XML 函数)
xml·大数据·hadoop·spark·数据处理·dataworks·maxcompute
科创致远36 分钟前
ESOP 电子作业指导书车间无纸化实战评测
大数据·数据库·人工智能·制造