Hive的两种表
1.内部表
- 内部表Load数据有两种方式:① Load data ***;②hdfs dfs -put ****。这是因为在Metastore文件,即mysql的hive数据库的“SDS”表中,保存着Hive表对应的hdfs路径信息。
- 内部表在Load数据时,如果使用LOCAL关键字,Hive会把本地文件系统中的数据文件复制到Hive的 /warehouse 目录。反之,则是将HDFS上的数据文件剪切到 /warehouse 目录。
- Hive在Load数据时,并不检查目录中的文件是否符合表所声明的模式。只有通过SELECT查询返回空值NULL,才能确定不匹配。
- 内部表drop时,表的元数据(mysql中)和数据文件(hdfs中)都会被删除。
create table book (id bigint, name string) row format delimited fields terminated by '\t';
2.外部表
- 外部表Load数据也有两种方式。
- 外部表只需在创建表时显示指定表中数据存储位置即可。Hive不会把数据剪切到自己的目录。
- 实际上,在创建表时,Hive甚至不会检查这一外部位置是否存在。这是一个非常重要的特性,这意味着可以先创建表,再上传数据文件。
- 如果不显示指定外部表的存放路径,这样Hive将在HDFS上的 /user/hive/warehouse/ 文件夹下创建一个以外部表表名的文件夹,并将属于这个表的数据存放在这里。
- 对于创建外部表命令,执行成功后,会在hdfs上自动创建空目录'/book'用来存储数据文件。
- 外部表在drop时,不会碰数据文件,而只会删除元数据信息,即HDFS上的'/book'目录依旧存在。
create external table book (id bigint, name string) row format delimited fields terminated by '\t' location '/book';
区别:
1. 在导入数据到外部表,数据并没有移动到 '/user/hive/warehouse/T_Name'目录下,也就是说外部表中的数据并不是由它自己来管理的!而内部表则不一样;
2. 在删除内部表的时候,Hive将会把属于内部表的元数据和数据文件全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据文件是不会删除的!
3.两种表的选择:推荐使用外部表(跨部门的数据)
4.默认行内分隔符
- 如果在创建表时没有用row format或stored as子句,那么Hive使用默认格式来分割的每一行。
- 默认的行内分隔符不是制表符,而是ASCII控制码集合中的Control-A(它的ASCII码为1)
- 这是因为它出现在文本中的概率相对于制表符来说概率更小。
CREATE TABLE records ( id string ) Row Format Delimited Fields Terminated By ‘\t’ ;
英语解释:行内格式的限定符以 ' \t '结尾终止
Hive的两种表的更多相关文章
- MySQL Innodb的两种表空间方式
要说表空间,MySQL的表空间管理远远说不上完善.换句话说,事实上MySQL根本没有真正意义上的表空间管理.MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间.只 ...
- select into from和insert into select from两种表复制语句区别
select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...
- INNODB与MyISAM两种表存储引擎区别
mysql数据库分类为INNODB为MyISAM两种表存储引擎了,两种各有优化在不同类型网站可能选择不同,下面小编为各位介绍mysql更改表引擎INNODB为MyISAM技巧. 常见的mysql表引擎 ...
- 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ...
- oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别
create table as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...
- hive的两种使用方式
hive的两种使用方式 1,hive shell的方式 启动命令: bin/hive 2.beeline客户端方式 首先在一个机器上启动hive thrift服务 bin/hiveserver2 在其 ...
- PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句
SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据,但是它们之间也有区别. 建表语句: bas_custom_rel表 CREATE TABLE ...
- 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式
1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具 本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...
- MySQL两种表存储结构MyISAM和InnoDB的性能比较测试
转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1 ...
随机推荐
- 170413、怎么精确理解leader布置的任务(技术外的话)
[缘起] 和一个同学交代了一个很重要的事情,结果执行的结果并不是自己想要的,微微生气之余,简单的聊聊“如何精确的理解leader布置的任务”. [员工角度的潜在困惑] 1)leader讲了很多,脑子记 ...
- QA规范
规范流程: 1)拿到需求,分析需求,先写一版checklist: 2)进行codediff,过程中最好一行行代码review,尽早发现代码错误或代码逻辑不完善的地方,codediff之后修改check ...
- jstree的checkbox实例+详解
jstree的checkbox实例较少,思索后决定进行一下整理,先上代码 $("#filtrate_row").on("loaded.jstree",funct ...
- Quick UDP Internet Connections 让互联网更快的协议,QUIC在腾讯的实践及性能优化
https://mp.weixin.qq.com/s/44ysXnVBUq_nJByMyX9n5A 让互联网更快:通往QUIC之路 原创: 史天 翻译 云技术实践 8月15日 QUIC(Quick U ...
- glibc-2.23_int_malloc_流程浅析
- SecureCRT图形界面
一般的咱们用这个工具连接服务器啥的都是命令行模式的,其实他也可以连接图形界面 一.Xmanager SecureCRT连接图形界面的话必须要有 Xmanager 工具的配合才行,SecureCRT显示 ...
- Java8 新特性之Stream API
1. Stream 概述 Stream 是Java8中处理集合的关键抽象概念,可以对集合执行非常复杂的查找,过滤和映射数据等操作; 使用 Stream API 对集合数据进行操作,就类似于使用 SQL ...
- MapReduce分布式编程框架
一.MapReduce分布式编程框架及yarn集群搭建 1.大数据解决的问题? 海量数据的存储:hadoop->分布式文件系统HDFS 海量数据的计算:hadoop->分布式计算框架Map ...
- Battery Historian之App耗电量测试
一.Battery Historian测试所需环境:Go+Git+Python+Java+Battery Historian源码 下载Battery Historian源码并且运行的步骤如下: 1.打 ...
- LRU算法的Python实现
http://flychao88.iteye.com/blog/1977653文章中介绍了常见的几种缓存淘汰策略 LRU:least recently used,最近最少使用算法.其实就是按使用时间倒 ...