hive学习笔记之三:内部表和外部表
欢迎访问我的GitHub
内容:所有原创文章分类和汇总 , 及配套源码 , 涉及Java、Docker、Kubernetes、DevOPS等;
本篇概览
- 本文是《hive学习笔记》系列的第三篇 , 学习各种类型的表及其特点 , 主要内容如下:
- 建库
- 内部表(也叫管理表或临时表)
- 外部表
- 表的操作
建库
- 创建名为test的数据库(仅当不存在时才创建) , 添加备注信息test database:
create database if not exists test comment 'this is a database for test';- 查看数据库列表(名称模糊匹配):
hive> show databases like 't*';OKtesttest001Time taken: 0.016 seconds, Fetched: 2 row(s)- describe database命令查看此数据库信息:
hive> describe database test;OKtest this is a database for test hdfs://node0:8020/user/hive/warehouse/test.db hadoop USER Time taken: 0.035 seconds, Fetched: 1 row(s)- 从上述命令的结果发现test数据库在hdfs上的存储位置是hdfs://node0:8020/user/hive/warehouse/test.db , 打开hadoop的web页面 , 查看hdfs目录 , 如下图 , 该路径的文件夹已经创建 , 并且是以.db结尾的:
文章插图- 新建数据库的文件夹都在/user/hive/warehouse下面 , 这是在中配置的 , 如下图红框:
文章插图- 删除数据库时加上if exists , 这样当数据库不存在时 , 执行该语句不会返回Error:
hive> drop database if exists test;OKTime taken: 0.193 seconds以上就是常用的库相关操作 , 接下来实践表相关操作;内部表
- 按照表数据的生命周期 , 可以将表分为内部表和外部表两类;
- 内部表也叫管理表或临时表 , 该类型表的生命周期是由hive控制的 , 默认情况下数据都存放在/user/hive/warehouse/下面;
- 删除表时数据会被删除;
- 以下命令创建的就是内部表 , 可见前面两篇文章中创建的表都是内部表:
create table t6(id int, name string)row format delimited fields terminated by ',';- 向t6表新增一条记录:
insert into t6 values (101, 'a101');- 使用hadoop命令查看hdfs , 可见t6表有对应的文件夹 , 里面的文件保存着该表数据:
[hadoop@node0 bin]$ ./hadoop fs -ls /user/hive/warehouse/t6Found 1 items-rwxr-xr-x3 hadoop supergroup9 2020-10-31 11:14 /user/hive/warehouse/t6/000000_0- 查看这个000000_0文件的内容 , 如下可见 , 就是表内的数据:
[hadoop@node0 bin]$ ./hadoop fs -cat /user/hive/warehouse/t6/000000_0101 a101- 执行命令drop table t6;删除t6表 , 再次查看t6表对应的文件 , 发现整个文件夹都不存在了:
[hadoop@node0 bin]$ ./hadoop fs -ls /user/hive/warehouse/Found 5 itemsdrwxr-xr-x- hadoop supergroup0 2020-10-27 20:42 /user/hive/warehouse/t1drwxr-xr-x- hadoop supergroup0 2020-10-29 00:13 /user/hive/warehouse/t2drwxr-xr-x- hadoop supergroup0 2020-10-29 00:14 /user/hive/warehouse/t3drwxr-xr-x- hadoop supergroup0 2020-10-29 13:04 /user/hive/warehouse/t4drwxr-xr-x- hadoop supergroup0 2020-10-29 16:47 /user/hive/warehouse/t5外部表- 创建表的SQL语句中加上external , 创建的就是外部表了;
- 外部表的数据生命周期不受Hive控制;
- 删除外部表的时候不会删除数据;
- 外部表的数据 , 可以同时作为多个外部表的数据源共享使用;
- 接下来开始实践 , 下面是建表语句:
create external table t7(id int, name string)row format delimited fields terminated by ','location '/data/external_t7';- 查看hdfs文件 , 可见目录/data/external_t7/已经创建:
[hadoop@node0 bin]$ ./hadoop fs -ls /data/Found 1 itemsdrwxr-xr-x- hadoop supergroup0 2020-10-31 12:02 /data/external_t7- 新增一条记录:
insert into t7 values (107, 'a107');- 在hdfs查看t7表对应的数据文件 , 可以见到新增的内容:
[hadoop@node0 bin]$ ./hadoop fs -ls /data/external_t7Found 1 items-rwxr-xr-x3 hadoop supergroup9 2020-10-31 12:06 /data/external_t7/000000_0[hadoop@node0 bin]$ ./hadoop fs -cat /data/external_t7/000000_0107,a107- 试试多个外部表共享数据的功能 , 执行以下语句再建个外部表 , 名为t8 , 对应的存储目录和t7是同一个:
create external table t8(id_t8 int, name_t8 string)row format delimited fields terminated by ','location '/data/external_t7';
- 截图|笔记本截图快捷键是什么
- 电池容量|Windows 自带功能查看笔记本电脑电池使用情况,你的容量还好吗?
- 每日|【每日idea 分享】12月1日:带朋友一起网上购物;线上笔记本应用程序
- 用于|用于半监督学习的图随机神经网络
- 复习|期末整理复习笔记?MHMO魅蒙iPad专用笔助提高效率
- 今日|“舜网”学习强国号今日上线 济南报业全媒体矩阵再添新成员
- SK|SK电讯推出自研AI芯片SAPEON X220 深度学习计算速度是常用GPU 1.5倍
- 效果|这个让你相见恨晚的技巧,能让PPT排版更加有设计感,推荐学习
- 学习C语言的软件,就突然被我绿了?
- 学习python第二弹
