1.外部表和内部表区别

  1. 创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。
  2. 删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
  3. hive默认创建的是内部表
  4. 外部表比内部表更加安全
  5. 在删除内部表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!

2. 内部表

  1. 创建表

    CREATE TABLE emp
    (
    name string,
    arr ARRAY<string>,
    stru1 STRUCT<sex:string,age:int>,
    map1 MAP<string,int>,
    map2 MAP<string,ARRAY<string>>
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|' //字段分隔符
    COLLECTION ITEMS TERMINATED BY ','
    MAP KEYS TERMINATED BY ':' //map的kv之间分隔符
    LINES TERMINATED BY '\n'; //集合元素分隔符
  2. 将数据导入hdfs

    # hdfs dfs -put hive.data /user/
    # hdfs dfs -ls /user/hive.data
    -rw-r--r-- 3 root supergroup 229 2017-07-15 11:26 /user/hive.data
  3. 导入数据到表里

    0: jdbc:hive2://localhost:10000> load data inpath "/user/hive.data" into table emp;
  4. 查看hdfs里的变化

    # hdfs dfs -ls /user/
    -rw-r--r-- 3 root supergroup 229 2017-07-15 11:26 /user/hive
    # 内部表导入数据相当于mv 将数据移动到自己的表目录里 # hdfs dfs -ls /user/hive/warehouse/emp
    Found 1 items
    -rwxr-xr-x 3 root supergroup 229 2017-07-15 11:26 /user/hive/warehouse/emp/hive.data
  5. 删除表

    0: jdbc:hive2://localhost:10000> drop table emp;
    No rows affected (0.373 seconds)
  6. 查看hdfs里的数据

    # hdfs dfs -ls /user/hive/warehouse/
    Found 1 items
    drwxr-xr-x - root supergroup 0 2017-07-12 10:53 /user/hive/warehouse/liuyao.db
    # emp表和数据已经被删除

3. 外部表

  1. 复制表方式创建外部表

    $beeline>create external table ext_emp like emp ;
    $beeline>create external table ext_emp as select * from emp ;
    $beeline>create external table ext_emp like emp ;
  2. 复制数据

    $beeline>insert into ext_emp select * from emp ;
  3. 重命名

    $beenline>alter table ext_emp rename to ext_emp2 ;
  4. 启动表删除保护,离线保护

    jdbc:hive2://> ALTER TABLE ext_emp ENABLE NO_DROP;
    jdbc:hive2://> ALTER TABLE c_employee DISABLE NO_DROP;
    jdbc:hive2://> ALTER TABLE c_employee ENABLE OFFLINE;
    jdbc:hive2://> ALTER TABLE c_employee DISABLE OFFLINE;

4.hive的外部表和内部表的更多相关文章

  1. Hive 文件格式 & Hive操作(外部表、内部表、区、桶、视图、索引、join用法、内置操作符与函数、复合类型、用户自定义函数UDF、查询优化和权限控制)

    本博文的主要内容如下: Hive文件存储格式 Hive 操作之表操作:创建外.内部表 Hive操作之表操作:表查询 Hive操作之表操作:数据加载 Hive操作之表操作:插入单表.插入多表 Hive语 ...

  2. hive 外部表和内部表的区别和相互转换

    Hive内部表和外部表区别 1.创建内部表时,内部表的数据文件是保存在指定的路径的:如若创建外部表,则只记录数据所在的路径,不会对数据位置做改变. 2.删除表的时候,内部表元数据和数据会跟着一起删除. ...

  3. hive学习笔记之三:内部表和外部表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

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

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

  5. 使用impala操作kudu之创建kudu表(内部表和外部表)

    依次启动HDFS.mysql.hive.kudu.impala 登录impala的shell控制端: Impala-shell 1:使用该impala-shell命令启动Impala Shell .默 ...

  6. Hive基础(5)---内部表 外部表 临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  7. hive -- 外部表、内部表、临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  8. hive存储、数据模型、内部表

    创建内部表 加一列元素 删除表

  9. Hive学习笔记——安装和内部表CRUD

    1.首先需要安装Hadoop和Hive 安装的时候参考 http://blog.csdn.net/jdplus/article/details/46493553 安装的版本是apache-hive-2 ...

随机推荐

  1. Oracle DataGuard启动与关闭顺序

    (一)Active DataGuard启动顺序(1)启动监听,先启从库再起主库 lsnrctl start (2)启动数据库,先启动备库在启主库 --先启备库 sql>startup nomou ...

  2. js正则表达式——元字符

    元字符 具有特殊意义的元字符 \d 匹配0-9的数字,相当于[0-9] \D 匹配除了0-9的任意字符 \w 匹配0-9.a-z.A-Z._ 的数字或字符,相当于[0-9a-zA-Z_] \W 匹配不 ...

  3. Vue如何循环渲染图片

    Vue如何把服务器返回的图片数据渲染出来 首先,一般来说,当请求图片的接口时,会返回一个数组,这个数组里会是一些图片的名字,比如1.jpg,2.jpg. 我的做法是先在data里定义一个数组,来存储服 ...

  4. VS2015菜单栏重复删除

    举个例子,这个是工具栏的,出现了重复 只要选择工具栏自定义那个选项,在多余命令的下方,先删除几个外部命令,然后把空行删除,最后全部重置即可 结果如下图

  5. MySQL架构与引擎初识

    一.MySQL逻辑架构 1.连接层: 最上层是一些客户端和连接服务,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 2.服 ...

  6. 前端使用mobx时,变量已经修改了,为什么组件还是没变化,map类型变量,对象类型变量的值获取问题(主要矛盾发生在组件使用时)

    前天我在使用一个前端多选框组件时遇到了一个问题,明明对象内的值已经修改了,但是组件显示的还是没有效果改变,以下是当时打出的log,我打印了这个对象的信息 对象内的值已经修改了但是组件还是不能及时更改, ...

  7. python面试题之基础2

    2.3 考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么? 两者用法相同,不同的是 range 返回的结果是一个列表,而 xrange 的结果是一个生成器,前者是 直接开辟一块内存 ...

  8. Flume(1)-概述与组成架构

    一. 定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. 二. 优点 1. 可以和任意集中式存储进程集成. 2. ...

  9. HTML5 学习笔记 | LOADING...

    一.HTML5基础知识 1.1 属性规范 1)元素应当合理嵌套 2)属性最好使用““包括 3)大小写不区分 1.2 常用html5标签 1)<!DOCTYPE> 定义文档类型 2)< ...

  10. 20145226夏艺华 《Java程序设计》第10周学习总结

    教材学习内容总结 学习目标 了解计算机网络基础 掌握Java Socket编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者 ...