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的两种表的更多相关文章

  1. MySQL Innodb的两种表空间方式

    要说表空间,MySQL的表空间管理远远说不上完善.换句话说,事实上MySQL根本没有真正意义上的表空间管理.MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间.只 ...

  2. select into from和insert into select from两种表复制语句区别

    select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...

  3. INNODB与MyISAM两种表存储引擎区别

    mysql数据库分类为INNODB为MyISAM两种表存储引擎了,两种各有优化在不同类型网站可能选择不同,下面小编为各位介绍mysql更改表引擎INNODB为MyISAM技巧. 常见的mysql表引擎 ...

  4. 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

    oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ...

  5. 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 ...

  6. hive的两种使用方式

    hive的两种使用方式 1,hive shell的方式 启动命令: bin/hive 2.beeline客户端方式 首先在一个机器上启动hive thrift服务 bin/hiveserver2 在其 ...

  7. PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句

    SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据,但是它们之间也有区别. 建表语句: bas_custom_rel表 CREATE TABLE ...

  8. 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式

    1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具   本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...

  9. MySQL两种表存储结构MyISAM和InnoDB的性能比较测试

    转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1 ...

随机推荐

  1. 巨蟒python全栈开发flask15项目开始7

    1.连续收取未读消息&&未读消息所属人 2.Pypinyin NLP中文同音字识别 3.jieba分词 4.Gemsim框架之LsiModel稀疏矩阵相似度 5.Gensim的应用 6 ...

  2. DNS服务简介

    一.域名系统 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫“名字” ...

  3. ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程

    执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...

  4. Codeforces Round #118 (Div. 1) A. Plant

    A. Plant 题目链接:http://codeforces.com/problemset/problem/185/A 题意:一个植物会长,一开始是一个正三角形,每过一年,一个向上的正三角形会变成三 ...

  5. Nagle's algorithm

    w41字节的数据包只有1字节的可用信息.以减少数据包发送量来提高TCP/IP网络性能. https://en.wikipedia.org/wiki/Nagle's_algorithm https:// ...

  6. About LabView

    Recently I am running an experiment. Because the lab has only NI devices, I have to learn to use the ...

  7. python学习笔记(二)— 字符串(string)

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var2 ...

  8. window 如何枚举设备并禁用该设备和启用该设备?如何注册设备热拔插消息通知?

    目前实现的功能: 1.设备枚举 2.设置设备禁用和启用 3.注册设备热拔插消息通知 4.获取设备 vid pid 数值 需要链接的库 SetupAPI.lib DeviceManager 类如下: D ...

  9. Spark Standalone Mode 单机启动Spark -- 分布式计算系统spark学习(一)

    spark是个啥? Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发. Spark和Hadoop有什么不同呢? Spark是基于map reduce算法实现的分布式计算,拥 ...

  10. 金融量化ushare模块

    一.介绍 Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们 ...